4
這是簡單的我很想念我敢打賭,我有一種感覺,它不是我需要的方式,因爲嵌套循環。這是一個簡單的腳本,我已經在某個地方取消了,並修改了一下以允許進行更多測試。從本質上講,它只是一直延遲一段時間,直到你關閉它的主機,但記錄失敗的響應。一切正常,但對於我的生活,我無法弄清楚如何讓它更新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服務器..這似乎是最可靠的方式。由於
感謝您的清理。不幸的是,pingname!不起作用,因爲它只是想出我需要擴展的變量名稱。所以我在日誌中看到name1 name2 name3。用!%pingname%!我得到的擴展變量,但它保持在同一個,它不會正確增加。 – mbazdell
這是因爲你沒有得到擴展的變量,所以你總是得到var「%var%」,加入!!與%%不採取任何效果,我更正了代碼中的一件事,我已經更新了我的答案,你設置錯誤的行在var:設置「pingname = name!namecount!」 – ElektroStudios
給它一個鏡頭,但它仍然只使用name1。 – mbazdell