我想在多台计算机上的批处理文件中运行命令。
例如:
@echo off
ping %1
pause
exit
如果这个批处理文件名为pingme.bat,我输入pingme.bat yahoo.com
,那么它将ping yahoo.com。我的问题是我希望批处理文件接受来自文本文件的输入。
例如,pingme.bat computers.txt
将读取computers.txt文件中列出的计算机的名称,并执行我指定要对其执行的任何命令。
%1
接受我在输入批处理文件时指定的输入。现在我希望批处理文件从该输入文本文件中读取行并将它们用作命令的参数。
文本中的行以列表形式显示,而不是使用逗号或任何内容。
答案 0 :(得分:9)
这样做的一种方法是将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%"
希望这会让你朝着正确的方向前进。
答案 1 :(得分:1)
您可以使用FOR
循环 - 将其另存为 pingme.bat :
FOR /F "tokens=*" %%L IN (%1) DO (
ping %%L
pause
)
并将其作为参数pingme.bat computers.txt
与文本文件一起调用。
答案 2 :(得分:0)
在文本文件中查找多个URL的IP地址,并在文本文件中获取输出:
FOR /F "tokens=*" %%L IN (%1) DO (
nslookup %%L >> output.txt
pause
)
将脚本保存为" ping.bat"并从命令提示符调用ping.bat URL.txt
。