如何知道批处理脚本中上一个命令的输出

时间:2013-02-01 11:12:01

标签: batch-file

@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脚本。

1 个答案:

答案 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
   )
))