回答:
FOR /r %%X IN (*) DO (ECHO %%X & DEL %%X)
&&
ではあり&
ませんか?
&&
は、最初のコマンドが失敗&
すると失敗し、2番目のコマンドを実行します。
DO
-parensの間にエスケープされていない括弧があるかどうかを確認してください。あなたはそれらにa ^
を追加することでそれらを脱出するかもしれません。
&
短いコマンドでは使用しても問題ありませんが、その1行で非常に長くなることがあります。その場合は、複数行の構文に切り替えてください。
FOR /r %%X IN (*.txt) DO (
ECHO %%X
DEL %%X
)
の配置(
と)
問題。後の丸括弧DO
は同じ行に配置する必要があります。そうしないと、バッチファイルが正しくなくなります。
詳細if /?|find /V ""
については、を参照してください。
DO
次の行の後の丸括弧を配置してはならないことを警告します。そうしないと、バッチファイルにブレーキがかかります。コードでforループを作成するとき、通常は中括弧を{
次の行に配置します。
SilverSkinとAndersはどちらも正しいです。括弧を使用して複数のコマンドを実行できます。ただし、コマンド自体(およびそのパラメーター)に括弧が含まれていないことを確認する必要があります。cmd
ネストされた括弧のセットを適切に処理する代わりに、最初の閉じ括弧を貪欲に検索します。これにより、コマンドラインの残りの部分が解析に失敗したり、括弧の一部がコマンドに渡されたりすることがあります(例:)DEL myfile.txt)
。
これの回避策は、ループの本体を個別の関数に分割することです。関数本体への「フォールスルー」を回避するために、おそらく関数本体をジャンプする必要があることに注意してください。
FOR /r %%X IN (*.txt) DO CALL :loopbody %%X
REM Don't "fall through" to :loopbody.
GOTO :EOF
:loopbody
ECHO %1
DEL %1
GOTO :EOF
C:\Program Files (x86)
です。
for %i in (1 2 3) do echo %i & echo foo
「1」、「foo」、「2」、「foo」、「3」、「foo」(別の行に)を出力します。