- ベストアンサー
MSDOSのfor文
DOSコマンドのFOR文で結果を出力させるにはどういう記述をすればよいでしょうか? 実行させたいのは、 for /d %%a in (ファイルパス\*) do del "%%a\*.cab" という内容なのですが、末尾に「>> log.log」だとうまく出力されません。 ""で囲った中にしてみてもやはり同じ状況なのですが、どうにか出力させることはできないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
%%a(ディレクトリ名)をログ出力でしたらechoで明示的に標準出力するのが簡単でしょうね for /d %%a in (ファイルパス\*) do ( echo 対象ディレクトリは%%aです >>log.txt del "%%a\*.cab" ) とか。 (全体のバッチファイルを標準出力でもいけると思いますが試してません) 中のファイル名の出力までしたいなら、for文を入れ子にして、内側のforでファイル名展開させるとか。
その他の回答 (2)
- Gotthold
- ベストアンサー率47% (396/832)
標準エラー出力をリダイレクトしたいなら del not_exist 2>> log.txt で出来るよ。
- heinell
- ベストアンサー率35% (420/1172)
「○○を削除しました」というメッセージを記録しようとしてるのでしょうか? でしたらforの問題じゃなくてDELコマンドの問題です。 バッチファイルを使わずにコマンド単体で試しても0バイトの出力しかないでしょう。 >>でリダイレクトできるのは標準出力。 DELで表示されるメッセージは標準エラー出力 なので>>ではログを残せない訳です。
お礼
heinellさん、ありがとうございます。 DELコマンドは削除できた結果は0バイトになるのですね。 確かに、削除できましたというメッセージは表示されませんもんね。 勉強になりました、ありがとうございます。 最後にdirを取得するしかないですかね…。
お礼
heinellさん、たびたびありがとうございます。 とりあえずdirのパイプで対象ファイルがなければそれでいいかなとしました^^; for文の入れ子、検討してみます。 (複雑にするとわからなくなるのでほどほどに)