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