0
@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 中,我们有 $? 知道上一个命令是否成功执行,例如 if[$? -eq 0] 然后;做成功,否则失败。这是如何在批处理脚本中发生的。我们有像 $ 这样的变量吗?批量。请告诉我。另外请建议我们是否可以使 pingtest 脚本更好。

4

1 回答 1

1

我想你正在寻找%errorlevel%.

这将为您提供最后执行的命令的错误代码。

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

注意:可以设置的错误代码范围很广,我只是以1为例,查看命令文档以查找错误代码的含义。

但请注意,如果您%errorlevel%for循环中使用,则需要使用延迟扩展。

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

@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
   )
))
于 2013-02-01T11:22:10.587 回答