質問: コマンドの実行結果を変数に格納いしたい。 有るプログラムへ特定ディレクトリのファイル数を渡す必要があり、バッチファイルを書いてますが、うまく行きません。 アドバイスを頂けましたら幸いです。 コマンドの実行欠課を変数に格納する方法を調べており、for文を使う事は分かったのですが、パイプを使った処理がうまく行きません。 ◎実行したいコマンド dir /b | find /c /v "log” ◎バッチファイル @echo off for /f "usebackq tokens=*" %%i in (`dir /b | find /c /v "log"`) do @set result=%%i echo %result% @echo on パイプを使わず、単純なコマンドだと正常に変数に格納されますので、パイプでfindに渡している事がだめだと思っております。 こういった場合、どう書けばよいかお教えください。
回答: " "の外で、| を書くとパイプの意味になりますので、 for /f "usebackq tokens=*" %%i in (`dir /b というコマンドと、 find /c /v "log"`) do @set result=%%i というコマンドをつなぐパイプだと認識されます。 で、上記コマンドはどちらも文法エラーです。 ^ でエスケープして下さい。 for /f "usebackq tokens=*" %%i in (`dir /b ^| find /c /v "log"`) do @set result=%%