感谢您的任何帮助。批处理文件FOR Loop通过IP地址文本文件不工作
一直在尝试编写一个批处理文件,该文件只是从文本文件中ping出一个IP地址列表。
我知道它可以使用下面的代码来完成:
FOR /F %i in (yourFile.txt) DO yourcommand %i
,并已使用的格式创建如下:
::@echo off
pause
for /F %%a in (vlans.txt) do (
pause
ECHO Checking connection to subnet %%a, please wait....
PING -n 1 %%a|find "Reply from " >NUL
IF NOT ERRORLEVEL 1 goto :SUCCESS
IF ERRORLEVEL 1 goto :FAIL
:FAIL
ECHO Subnet %%a is unreachable
pause
:SUCCESS
ECHO Subnet %%a has passed!
pause
)
ECHO All subnets have now been tested....................
Pause
它需要一个稍微完善一些,我已经将@Echo注释掉,以便我可以看到发生了什么。以下是输出:
C:\for /F "tokens=*" %a in (vlans.txt) do (
pause
ECHO Checking connection to subnet %a, please wait....
PING -n 1 %a | find "Reply from " 1>NUL
IF NOT ERRORLEVEL 1 goto :SUCCESS
IF ERRORLEVEL 1 goto :FAIL
ECHO Subnet %a is unreachable
pause
ECHO Subnet %a has passed!
pause
)
C:\>(
pause
ECHO Checking connection to subnet 10.169.169.129, please wait....
PING -n 1 10.169.169.129 | find "Reply from " 1>NUL
IF NOT ERRORLEVEL 1 goto :SUCCESS
IF ERRORLEVEL 1 goto :FAIL
ECHO Subnet 10.169.169.129 is unreachable
pause
ECHO Subnet 10.169.169.129 has passed!
pause
)
Press any key to continue . . .
Checking connection to subnet 10.169.169.129, please wait....
C:\>ECHO Subnet %a has passed!
Subnet %a has passed!
C:\>pause
Press any key to continue . . .
所以很多事情都发生了那里,我不明白或者没想到,像它不是通过在文本文件中的每个IP地址循环。它重复自己,首先没有填充变量,然后是变量。还有一些变量在批处理文件运行时没有进一步填充IP地址。
我是新来编写批处理文件,所以我知道我的语法是错误的,但不知道我哪里出错了?
vlan.txt只是一个IP地址列表,每行一个。
在此先感谢。
不错,但'IF%ERRORLEVEL%'不能工作,因为它扩大了只有在完整的块进行解析,一次,所以它是独立的PING的结果 – jeb 2013-03-18 22:41:25
嗯,是的,它就像冻结%时间%...谢谢! – Endoro 2013-03-18 23:39:40