Batch file 对于批处理文件中的If循环
有人能帮我弄清楚为什么这不管用吗?我会模仿其他if循环,但这不起作用Batch file 对于批处理文件中的If循环,batch-file,Batch File,有人能帮我弄清楚为什么这不管用吗?我会模仿其他if循环,但这不起作用 echo Ping for /F "tokens=*" %%a in (%file%) do ( @ping %%a if "TTL=" > nul && ( >> %log1% echo %%a echo Ping Successful to %%a ) else ( >> %log2% echo %%a
echo Ping
for /F "tokens=*" %%a in (%file%) do (
@ping %%a
if "TTL=" > nul && (
>> %log1% echo %%a
echo Ping Successful to %%a
) else (
>> %log2% echo %%a
echo Ping failed to %%a
)
)
这就是模仿的问题所在。looklike并不意味着worklike。如果
语法完全是胡说八道,而ping
只执行“仅”ping,则无法处理其结果。如果语法正确,它将类似于:
echo Ping
for /F "tokens=*" %%a in (%file%) do (
ping %%a |find "TTL=" >nul
if errorlevel 1 (
>> %log2% echo %%a
echo Ping failed to %%a
) else (
>> %log1% echo %%a
echo Ping Successful to %%a
)
)
或者保留您的&&
/| |
语法:
echo Ping
for /F "tokens=*" %%a in (%file%) do (
ping %%a |find "TTL=" >nul && (
>> %log1% echo %%a
echo Ping Successful to %%a
) || (
>> %log2% echo %%a
echo Ping failed to %%a
)
)
这就是模仿的问题所在。looklike并不意味着worklike。如果语法完全是胡说八道,而ping
只执行“仅”ping,则无法处理其结果。如果语法正确,它将类似于:
echo Ping
for /F "tokens=*" %%a in (%file%) do (
ping %%a |find "TTL=" >nul
if errorlevel 1 (
>> %log2% echo %%a
echo Ping failed to %%a
) else (
>> %log1% echo %%a
echo Ping Successful to %%a
)
)
或者保留您的&&
/| |
语法:
echo Ping
for /F "tokens=*" %%a in (%file%) do (
ping %%a |find "TTL=" >nul && (
>> %log1% echo %%a
echo Ping Successful to %%a
) || (
>> %log2% echo %%a
echo Ping failed to %%a
)
)
嗯。您尚未处理ping命令的结果。您不能在批处理文件中使用
进行比较-您需要使用GTR
。您可以在类似这样的if条件中使用条件执行。@npocmaka我不认为,
用于比较,但要将输出重定向到NUL(请参阅我的答案),请考虑在发布问题之前阅读您试图使用的命令的帮助。通过在命令名后键入正斜杠和问号,可以获得任何Windows控制台命令的帮助如果/?
@bill\u steward delayedexpansion在此处不需要,并且cmd完全能够执行此功能。请阅读并阅读。您希望该代码具体做什么?你说“不行”是什么意思。您尚未处理ping命令的结果。您不能在批处理文件中使用
进行比较-您需要使用GTR
。您可以在类似这样的if条件中使用条件执行。@npocmaka我不认为,
用于比较,但要将输出重定向到NUL(请参阅我的答案),请考虑在发布问题之前阅读您试图使用的命令的帮助。通过在命令名后键入正斜杠和问号,可以获得任何Windows控制台命令的帮助如果/?
@bill\u steward delayedexpansion在此处不需要,并且cmd完全能够执行此功能。请阅读并阅读。您希望该代码具体做什么?你说“不行”是什么意思?