Batch-script-files-pipes
バッチスクリプト-ファイルパイプ
パイプ演算子(|)は、あるコマンドの出力(デフォルトではSTDOUT)を受け取り、別のコマンドの入力(デフォルトではSTDIN)に送ります。 たとえば、次のコマンドはディレクトリC:\の内容をソートします
dir C:\ | sort
この例では、両方のコマンドが同時に開始されますが、dirコマンドの出力を受け取るまでsortコマンドは一時停止します。 sortコマンドは、dirコマンドの出力を入力として使用し、その出力をハンドル1(つまり、STDOUT)に送信します。
次は、pipeコマンドの別の例です。 この例では、ファイルC:\ new.txtの内容がパイプフィルターを介してsortコマンドに送信されます。
@echo off
TYPE C:\new.txt | sort
コマンドとリダイレクト演算子の組み合わせ
通常、パイプ演算子をリダイレクト演算子とともに使用して、パイプコマンドを操作する際に有用な機能を提供します。
たとえば、以下のコマンドは最初にC:\で定義されたすべてのファイルを取得し、次にpipeコマンドを使用して、拡張子が.txtのすべてのファイルを検索します。 次に、この出力を取得して、ファイルAllText.txtに出力します。
dir C:\ | find "txt" > AllText.txt
複数のパイプコマンドの使用
同じコマンドで複数のフィルターを使用するには、フィルターをパイプ(|)で区切ります。 たとえば、次のコマンドは、ドライブC上のすべてのディレクトリを検索し、文字列「Log」を含むファイル名を見つけて、一度に1つのコマンドプロンプトウィンドウに表示します-
dir c:\/s/b | find "TXT" | more
パイプフィルターの使用方法の例を次に示します。
例
次の例では、tasklistコマンドを使用して実行中のすべてのタスクのリストを送信し、出力をfindコマンドに送信します。 findコマンドは、メモ帳タイプのすべてのプロセスを検索し、コマンドプロンプトに表示します。
tasklist | find "notepad"
出力
次に出力例を示します。
notepad.exe 1400 Console 1 8,916 K
notepad.exe 4016 Console 1 11,200 K
notepad.exe 1508 Console 1 8,720 K
notepad.exe 4076 Console 1 8,688 K
次の例では、tasklistコマンドを使用して実行中のすべてのタスクのリストを送信し、moreコマンドに出力を送信します。 その後、moreコマンドは、実行中のタスクのリストを1ページずつ表示します。
例
tasklist | more
出力
Image Name PID Session Name Session# Mem Usage
====================== ================ =========== ============
System Idle Process 0 Services 0 4 K
System 4 Services 0 276 K
smss.exe 344 Services 0 1,060 K
csrss.exe 524 Services 0 4,188 K
csrss.exe 608 Console 1 58,080 K
wininit.exe 616 Services 0 3,528 K
winlogon.exe 644 Console 1 5,636 K
services.exe 708 Services 0 7,072 K
lsass.exe 716 Services 0 10,228 K
svchost.exe 784 Services 0 10,208 K
svchost.exe 828 Services 0 7,872 K
dwm.exe 912 Console 1 208,316 K
nvvsvc.exe 932 Services 0 6,772 K
nvxdsync.exe 968 Console 1 16,584 K
nvvsvc.exe 976 Console 1 12,780 K
svchost.exe 1008 Services 0 20,340 K
svchost.exe 224 Services 0 39,740 K
svchost.exe 468 Services 0 11,864 K
svchost.exe 860 Services 0 11,184 K
svchost.exe 232 Services 0 16,992 K
wlanext.exe 1168 Services 0 12,840 K
-- More --
次の例では、tasklistコマンドを使用して実行中のすべてのタスクのリストを送信し、出力をfindコマンドに送信します。 findコマンドは、メモ帳タイプのすべてのプロセスを検索し、リダイレクトコマンドを使用してコンテンツをファイルtasklist.txtに送信します。
例
tasklist | find "notepad" > tasklist.txt
出力
ファイルtasklist.txtを開くと、次のサンプル出力が得られます。
notepad.exe 1400 Console 1 8,916 K
notepad.exe 4016 Console 1 11,200 K
notepad.exe 1508 Console 1 8,720 K
notepad.exe 4076 Console 1 8,688 K