FORコマンドの出力リダイレクト
FORコマンドの出力をファイルにリダイレクトするとき、
for %i in (a b) do echo %i >file
と書くと、doコマンドの繰り返しごとにリダイレクトされます。
この場合、毎回、上書きになってファイルには最後の1行しか入りません。
for %i in (a b) do echo %i >>file
と書くと、追加書きになって、すべて入ります。
しかし、最初からfileが空でないと、その追加書きになります。
もし上書きにしたいときは、最初に空にします。
type nul >file
for %i in (a b) do echo %i >>file
あるいは、forコマンド全体をリダイレクトします。
(for %i in (a b) do echo %i) >file
ただし、このとき、doコマンドのコマンドエコーも一緒にリダイレクトされるので、注意が必要です。
echo off
(for %i in (a b) do echo %i) >file
または、
echo on
(for %i in (a b) do @echo %i) >file
あるいは、
(for %i in (a b) do echo %i >&4) 4>file
とすれば、doコマンドのコマンドエコーはリダイレクトされません。
« ファイル名に!を使うと、環境変数の遅延展開と相性が悪い。 | トップページ | FOR /Fコマンドでファイル更新するときの出力リダイレクト »