@echo off
setlocal enabledelayedexpansion
>result.txt (
for /f %%a in (srvrname.txt) do (
ping -n 1 %%a > nul && echo %%a up||echo %%a DOWN
))
我正在使用上述脚本对某些服务器进行ping测试。我想了解ping命令的输出如何传递给echo UP或echo DOWN部分。在unix中我们有$?要知道上一个命令是否成功执行,如果[$? -eq 0]然后;做成功其他失败完成。 这是如何在批处理脚本中发生的。我们有像美元一样的变数吗?批量生产。请告诉我。另外请建议我们是否可以更好地制作pingtest脚本。
答案 0 :(得分:1)
我认为您正在寻找%errorlevel%
。
这将为您提供最后执行的命令的错误代码。
if %errorlevel%==0 echo SUCCESS
if %errorlevel%==1 echo FAIL
注意: 可以设置一系列错误代码,我只使用1作为示例,查看命令文档以查找错误代码的含义。< / p>
请注意,如果您在%errorlevel%
循环中使用for
,则需要使用延迟扩展。
您已在脚本(setlocal enabledelayedexpansion
)上添加了该内容,因此您只需将%
更改为!
即可。
@echo off
setlocal enabledelayedexpansion
>result.txt (
for /f %%a in (srvrname.txt) do (
ping -n 1 %%a > nul
if !errorlevel!==0 (
echo Ping replied successfully
) else (
echo There was an error
)
))