我想在多台计算机上的批处理文件中运行命令.
例如:
@echo off
ping %1
pause
exit
Run Code Online (Sandbox Code Playgroud)
如果这个批处理文件被称为pingme.bat并且我输入pingme.bat yahoo.com那么它将ping yahoo.com.我的问题是我希望批处理文件接受来自文本文件的输入.
像这样pingme.bat computers.txt,它将读取文件中列出的计算机的名称,并执行我指定要执行的任何命令.
%1 接受我在输入批处理文件时指定的输入,现在我想批处理文件读取txt中的行并执行它.
文本中的行以列表形式使用,不使用逗号或任何内容.
一种方法是将URLS放在一个文本文件中,如下所示:
www.google.com
www.yahoo.com
然后运行以下批处理
for /f %%a in (%1) do (
echo Pinging %%a...
ping %%a
)
Run Code Online (Sandbox Code Playgroud)
并从cmd运行它作为pingme.bat URLs.txt
或者,您可以在批处理中指定文本文件的名称,并在不使用参数的情况下运行它
for /f %%a in (URLs.txt) do (
echo Pinging %%a...
ping %%a
)
Run Code Online (Sandbox Code Playgroud)
这是另一种方法
此特定批次将从列表中提取,如果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%"
Run Code Online (Sandbox Code Playgroud)
希望这能让你朝着正确的方向前进.