本文へスキップ
BecomeCoder

バッチファイルコース · 第5章 ファイル操作と実践 · レッスン17

リダイレクトとパイプ ― 出力の行き先を変える

導入

コマンドの結果は普通、画面に表示されます。この行き先を ファイルに保存 したり、別のコマンドへ渡し たりできます。ログ取りやフィルタリングに欠かせない仕組みです。

説明

  • コマンド > ファイル … 結果をファイルに書き出す(上書き
  • コマンド >> ファイル … 結果をファイルの末尾に 追記
  • コマンド | 別コマンド … 結果を次のコマンドへ パイプ で流す
  • 2> … エラー出力の行き先を変える。2>nul でエラーを捨てる
@echo off
rem 一覧をファイルに保存(上書き)
dir > filelist.txt

rem ログに1行追記
echo %DATE% %TIME% 実行しました >> run.log

rem 一覧のうち「.txt」を含む行だけ抽出
dir | find ".txt"

nul は「何もない場所(捨て場)」を指す特別な名前です。> nul で通常の出力を、2> nul でエラー出力を捨てられます。両方まとめて捨てるなら > nul 2>&1 と書きます(2>&1 は「エラー出力を通常出力と同じ行き先へ」の意味)。

@echo off
rem 存在確認のメッセージも要らないので黙って実行
mkdir temp 2>nul

rem 結果もエラーも一切表示せず実行
ping localhost > nul 2>&1
echo 疎通確認が終わりました

findfindstr にパイプで渡すと、出力の中から目的の行だけを取り出せます。findstr は正規表現も使える強力版です。

やってみよう

echo %DATE% %TIME% 起動 >> mylog.txt を何回か実行し、mylog.txt を開いてみましょう。>> なので消えずに行が積み重なっていくのが確認できます。