dired-do-shell-commandでshellコマンドのfor i in *; do $command ; doneをよくやる。
 *はdiredでマークしたファイル
 $commandはミニバッファで入力するコマンド
 *の代わりに?を使わないのは?をスペースで囲まなければならず?/file1などができないから。

んでこれをいちいち入力するのが面倒くさくて↓みたいなマクロ組んだけど、
(local-set-key (kbd "C-!") (kbd "!for SPC i SPC in SPC * SPC ; SPC do SPC SPC done M-b C-b"))

実行するとミニバッファ入力ができず終了してしまう。
C-x ESC ESCでなにが起きたか確認すると↓のようにやはりミニバッファ入力が即座に終わっていただけなのが確認できた。
(dired-do-shell-command "for i in * ; do done" nil (quote ("for i in * ; do done")))

ミニバッファ入力を終了させないでおきたいけど方法が見つからない。
私がelispのフロー制御を分かってないのが悪いんですけどね。
どなたかヒントだけでも教えてもらえませんか?