• ベストアンサー

MSDOSのfor文

DOSコマンドのFOR文で結果を出力させるにはどういう記述をすればよいでしょうか? 実行させたいのは、 for /d %%a in (ファイルパス\*) do del "%%a\*.cab" という内容なのですが、末尾に「>> log.log」だとうまく出力されません。 ""で囲った中にしてみてもやはり同じ状況なのですが、どうにか出力させることはできないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • heinell
  • ベストアンサー率35% (420/1172)
回答No.2

%%a(ディレクトリ名)をログ出力でしたらechoで明示的に標準出力するのが簡単でしょうね for /d %%a in (ファイルパス\*) do ( echo 対象ディレクトリは%%aです >>log.txt del "%%a\*.cab" ) とか。 (全体のバッチファイルを標準出力でもいけると思いますが試してません) 中のファイル名の出力までしたいなら、for文を入れ子にして、内側のforでファイル名展開させるとか。

pepe3pei
質問者

お礼

heinellさん、たびたびありがとうございます。 とりあえずdirのパイプで対象ファイルがなければそれでいいかなとしました^^; for文の入れ子、検討してみます。 (複雑にするとわからなくなるのでほどほどに)

その他の回答 (2)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.3

標準エラー出力をリダイレクトしたいなら del not_exist 2>> log.txt で出来るよ。

  • heinell
  • ベストアンサー率35% (420/1172)
回答No.1

「○○を削除しました」というメッセージを記録しようとしてるのでしょうか? でしたらforの問題じゃなくてDELコマンドの問題です。 バッチファイルを使わずにコマンド単体で試しても0バイトの出力しかないでしょう。 >>でリダイレクトできるのは標準出力。 DELで表示されるメッセージは標準エラー出力 なので>>ではログを残せない訳です。

pepe3pei
質問者

お礼

heinellさん、ありがとうございます。 DELコマンドは削除できた結果は0バイトになるのですね。 確かに、削除できましたというメッセージは表示されませんもんね。 勉強になりました、ありがとうございます。 最後にdirを取得するしかないですかね…。

関連するQ&A