如何使批处理文件ping多个依赖于用户输入的计算机?

时间:2018-02-18 09:04:31

标签: batch-file cmd

我刚刚(在过去的24小时内)开始学习如何创建批处理文件,以帮助自动完成一些繁琐的任务。

这个项目的目的是能够检查特定站点的多台计算机上的连接,而无需手动ping每台计算机

我正在试图弄清楚如何制作一个将执行以下操作的批处理文件。

询问用户“您正在使用哪个站点?” 用户输入网站ID 询问用户“您要ping哪台计算机?”
用户输入计算机编号(这是棘手的部分)

  • 用户将输入2个或更多dns后缀
  • 他们如何分开dns后缀?用空格或逗号?(111,222或111 222)或在输入每个dns后缀后该行必须断开。如果是这样,它将如何知道用户何时完成?

显示每个dns名称的ping结果

注意:整个DNS名称将类似于123tmnpc111。 tmnpc部分将始终相同,只有前缀和后缀会有所不同

因此,当执行ping时,它需要类似

 ping %siteid%tmnpc%pcid1% -n 1 -w 2000
 ping %siteid%tmnpc%pcid2% -n 1 -w 2000
 ping %siteid%tmnpc%pcid3% -n 1 -w 2000

这是我在ping一个DNS名称时测试的简单方法。但我不知道如何使这个工作适用于多个(和可变的)DNS名称。

@echo off

echo Which Site Are You Working On?
echo/

set /p siteid=">> "
echo/

echo Which Computers Do You Want To Ping?
echo/

set /p pcid=">> "
echo/
cls

ping %siteid%pc%pcid% -n 1 -w 2000

pause > nul

如果有人能指出我正确的方向,我将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:1)

使用for循环处理列表

set /p "siteid=Which Site Are You Working On? >> "
echo Which Computers Do You Want To Ping?
set /p "pcid=Which Computers Do You Want To Ping? >> "
for %%a in (%pcid%) do (    
  ping %siteid%pc%%a -n 1 -w 2000
)
pause > nul

计算机列表可以用逗号或空格(或混合)分隔。