8

我想在多台计算机上的批处理文件中运行命令。

例如:

@echo off
ping %1
pause
exit

如果这个批处理文件被称为 pingme.bat,并且我键入pingme.bat yahoo.com,那么它将 ping yahoo.com。我的问题是我希望批处理文件接受来自文本文件的输入。

例如,pingme.bat computers.txt将读取computers.txt 文件中列出的计算机名称,然后执行我指定的任何命令对它们执行。

%1接受我在键入批处理文件时指定的输入。现在我希望批处理文件从该输入文本文件中读取行并将它们用作命令的参数。

文本中的行是列表形式,不使用逗号或任何东西。

4

3 回答 3

9

这样做的一种方法是将 URLS 放在一个文本文件中,如下所示:

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 回答
0

在文本文件中查找多个 URL 的 IP 地址并在文本文件中获取输出:

FOR /F "tokens=*" %%L IN (%1) DO (
    nslookup %%L >> output.txt
    pause 
)

将脚本另存为“ping.bat”并ping.bat URL.txt从命令提示符调用。

于 2018-02-02T21:08:57.440 回答