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

Batch file 如何知道批处理脚本中上一个命令的输出,batch-file,Batch File,我用上面的脚本对一些服务器进行了ping测试。我想了解ping命令的输出是如何传递到echo UP或echo DOWN部分的..就像在unix中一样,我们有$?了解前一个命令是否成功执行,如if[$?-eq 0]then;成功是成功,失败是失败。 这在批处理脚本中是如何发生的。我们有像$这样的变量吗?成批地。请让我知道。另外,请建议我们是否可以改进pingtest脚本。我想您正在寻找%errorlevel% 这将为您提供上次执行的命令的错误代码 @echo off setlocal enable

我用上面的脚本对一些服务器进行了ping测试。我想了解ping命令的输出是如何传递到echo UP或echo DOWN部分的..就像在unix中一样,我们有$?了解前一个命令是否成功执行,如if[$?-eq 0]then;成功是成功,失败是失败。
这在批处理脚本中是如何发生的。我们有像$这样的变量吗?成批地。请让我知道。另外,请建议我们是否可以改进pingtest脚本。

我想您正在寻找
%errorlevel%

这将为您提供上次执行的命令的错误代码

@echo off
setlocal enabledelayedexpansion
>result.txt (
  for /f %%a in (srvrname.txt) do (
   ping -n 1 %%a > nul && echo %%a up||echo %%a DOWN 
))
注意:可以设置一系列错误代码,我只是以1为例,查看命令文档以了解错误代码的含义

不过要小心,如果在
for
循环中使用
%errorlevel%
,则需要使用延迟扩展

您已经在脚本中添加了它(
setlocal enabledelayedexpansion
),因此您只需将
%
更改为

if %errorlevel%==0 echo SUCCESS
if %errorlevel%==1 echo FAIL

我认为ping-n1%%a>nul和&echo%%a up | echo%%a DOWN这一行将变成ping-n1%%a>nul。因为我现在正在使用errorlevel进行验证。请让我知道我是否正确。非常感谢您的回复。这消除了我的一些疑虑是的,我几乎从我的回答中去掉了那一点,因为它没有意义,但我在您的操作中保留了它。我现在已经去掉了:)我想知道我什么时候没有使用ERRORLEVEl,我的ping命令输出如何传递到另一节ping-n 1%%a>nul&&echo%%a up | echo%%a DOWN。在这里我没有使用管道操作符。所以如何向上或向下打印回声。管道的左侧为成功,右侧为失败。
@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
   )
))