2011年10月18日火曜日

DOSコマンドでテキストファイル行数分引数にして処理

バッチファイル実行時、引数をテキストファイルから読み込んで、テキストファイルの行数分処理させたい。
ということがありまして、以下のように for 分を使う事で実現できました。覚え書きとして残しておきます。
 for で繰り返し infile.txt を1行ずつ読み、%%A に格納し、 ping %%A を infile.txt を読み終えるまで実行していきます。
for /f %%A in (infile.txt) do ping %%A
pause
infile.txt の中身
192.168.1.1
localhost
実行結果
C:\>ping 192.168.1.1

192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=128
192.168.1.1 からの応答: バイト数 =32 時間 <1ms TTL=128

192.168.1.1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

C:\>ping localhost

testPC [::1]に ping を送信しています 32 バイトのデータ:
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms
::1 からの応答: 時間 <1ms

::1 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

C:\>pause
続行するには何かキーを押してください . . .
ping じゃなくて、他のコマンドとか他のプログラムを呼び出したりしても使えます。
応用範囲の広いコマンドだと思います。

0 件のコメント :

コメントを投稿