【问题标题】:Get two different outputs from a ping request in a batch file从批处理文件中的 ping 请求中获取两个不同的输出
【发布时间】:2013-08-16 14:29:34
【问题描述】:

我正在编写一个用于整理 ping 请求的脚本。

@ECHO OFF
FOR /L %%i IN (60,1,254) DO ping -n 1 10.100.121.%%i & IF %%i==Reply (
ECHO 10.100.121.%%i>>c:\Test\Online.txt
  ) ELSE (
ECHO 10.100.121.%%i>>c:\Test\Offline.txt
  )
pause

但它似乎没有按应有的方式工作。所有 IP 地址都进入到 offline.txt 文件中,即使它们在线。

我做错了什么?

如果有人很善良,那么我想知道我是否可以为每个在线的ping请求运行带有“%online_ip%”变量的命令,而那些不在线的则发送到offline.txt

C:\Test\putty.exe "%online_ip%" -l "root" -pw "pw" -m C:\Test\Commands.txt

编辑:

foxidrive解决方案的“改进”版本!

@echo off
FOR /L %%i IN (60,1,254) DO (
   echo  Checking if host at 10.100.121.%%i is Online.
   ping -n 1 10.100.121.%%i >nul 
    if not errorlevel 1 (
      echo  Host is Online & echo  Starting SSH with Plink at 10.100.121.%%i & echo.
      echo y | plink.exe root@10.100.121.%%i -pw password -m c:\Test\Commands.txt
    ) else (
      echo  Host is Offline & echo.
      >>c:\Test\Offline.txt ECHO 10.100.121.%%i
   )
)
pause

【问题讨论】:

  • %%i 是你的“计数器”——一个整数。永远不会是Reply

标签: batch-file command output ping


【解决方案1】:

看看这对你有什么作用:

@echo off
FOR /L %%i IN (60,1,254) DO (
   echo pinging 10.100.121.%%i
   ping -n 1 10.100.121.%%i >nul 
    if not errorlevel 1 (
      echo running putty with 10.100.121.%%i
      C:\Test\putty.exe "%%i" -l "root" -pw "pw" -m C:\Test\Commands.txt
    ) else (
      echo 10.100.121.%%i offline
      >>c:\Test\Offline.txt ECHO 10.100.121.%%i
   )
)
pause

【讨论】:

  • 谢谢!!我必须进行一些更改才能使其正常工作并看起来更好一些。我还用 plink(putty 的命令行版本)交换了 putty,以摆脱 putty gui 并使其更容易。代码添加在我的问题的底部:)
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 2012-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 2020-02-06
  • 1970-01-01
相关资源
最近更新 更多