我觉得我可能缺少了一些简单的东西,而且由于嵌套循环的原因,我有一种感觉它不起作用。这是一个我从某个地方找来并稍微修改了一下以进行更多测试的简单脚本。基本上,它只会延迟一段时间后不断地对主机进行ping测试,直到您关闭它,但会记录失败的响应。所有功能都正常,但是我无法弄清楚如何更新for循环中使用的名称。
@echo off
setlocal enabledelayedexpansion
:: ** Enter name to identify host in log **
set name1=Test 1
set name2=Test 2
set name3=Test 3
:: ** Enter IP or HOSTNAME to test against **
set hostIP1=1.1.1.1
set hostIP2=2.2.2.2
set hostIP3=3.3.3.3
:: ** Enter Delay in milliseconds between each test **
set delayMS=2000
title -DO NOT CLOSE- Ping Test
echo DO NOT CLOSE
echo Ping Test
:loop
set namecount=1
for %%x in (%hostIP1% %hostIP2% %hostIP3%) do (
set pingline=1
set pingname=name!namecount!
for /f "delims=" %%A in ('ping -n 1 -w 2000 -l 255 %%x') do (
if !pingline! equ 2 (
set logline=!date! !time! "%%A" - %%x !%pingname%!
echo !logline! | find "TTL=">nul || echo !logline! >> pinglog.txt
)
set /a pingline+=1
)
set /a namecount+=1
)
sleep -m %delayMS%
goto loop
通常我会使用另一种语言,但我需要在各种Windows服务器上运行。这似乎是最可靠的方法。谢谢。
%%name!namecount!%%
部分的作用。它现在完全按预期工作了。非常感谢! - mbazdell