バッチファイルでif構文を使用したとき、エラーで処理がうまく進まず、対処に苦労したのでメモする。
今回の処理は、カレントディレクトリで条件指定したファイル名で繰り返し処理を行う中で、if構文を使用するというもの。やりたいことは、test.batのファイルを除き、カレントディレクトリ内のbatファイルを全て任意の処理すること。エラーでうまく処理できなかったコードは以下の通り。
間違ったコード
for %%f in (*.bat) do (
if not %%f==test.bat(
echo %%f
)
)
ぱっと見、何が悪いのか分からず、ググっても全く原因が分からなかった。これをぱっと見で、すぐに間違いが見つかる人は凄いです。
正しいコード
for %%f in (*.bat) do (
if not %%f==test.bat (
echo %%f
)
)
何が違うねん、と思う人はよく見てください。test.batの後に半角スペースが入っています。
これが抜けるだけでif構文の処理が進まなくなります。バッチファイルは手軽に実行できる一方で、視認性が悪く、ちょっとしたミスですぐに処理が止まるので、複雑な処理には向いていないですね。
単純なミスのため、どこにも情報がなく、原因を見つけるのに時間がかかったので、同じ悩みを持った人は参考にしてください。
コメント