8

複数のコンピューターでバッチファイルでコマンドを実行したい。

例えば:

@echo off
ping %1
pause
exit

このバッチファイルがpingme.batと呼ばれ、私が入力pingme.bat yahoo.comすると、yahoo.comにpingが送信されます。私の問題は、バッチファイルがテキストファイルからの入力を受け入れるようにしたいことです。

たとえばpingme.bat computers.txt、computers.txtファイルにリストされているコンピューターの名前を読み取り、それらに対して実行するように指定したコマンドを実行します。

%1バッチファイルを入力するときに指定した入力を受け入れます。次に、バッチファイルでその入力テキストファイルから行を読み取り、コマンドの引数として使用します。

テキストの行はリスト形式であり、コンマなどは使用されていません。

4

3 に答える 3

9

これを行う 1 つの方法は、次のように URL をテキスト ファイルに配置することです。

www.google.com
www.yahoo.com

次に、次のバッチを実行します

for /f %%a in (%1) do (
echo Pinging %%a...
ping %%a
)

cmdからpingme.bat URLs.txtとして実行します

または、バッチ内でテキスト ファイルの名前を指定し、パラメータなしで実行することもできます。

for /f %%a in (URLs.txt) do (
echo Pinging %%a...
ping %%a
)

ここに別のアプローチがあります

この特定のバッチはリストから取得し、ping が成功した場合は output.txt に書き込みます。

@ECHO OFF
SET output=output.txt
IF EXIST "%output%" DEL "%output%"
FOR /f %%a IN (URLs.txt) DO (
    CALL :ping %%a

)
GOTO :EOF

:ping
ping -n 1 %1 | find "Approximate round trip" >NUL || ECHO %1>>"%output%"

うまくいけば、それがあなたを正しい方向に導きます。

于 2012-05-18T13:29:11.637 に答える
1

FORループを使用できます - これをpingme.batとして保存します:

FOR /F "tokens=*" %%L IN (%1) DO (
    ping %%L
    pause 
)

テキストファイルをパラメータとして呼び出しますpingme.bat computers.txt

于 2012-05-18T13:29:21.220 に答える