簡體   English   中英

將循環變量用作Windows批處理腳本中新變量的一部分

[英]Use loop variable as part of new variable in Windows batch script

我正在嘗試根據其循環變量值分配變量,以便在循環結束時我可以在一行中回顯每個結果。 常規命令是一個nslookup,其中查詢了多個服務器。 我正在抓取名稱結果的開頭(直到第一個點),以基於5秒的延遲顯示結果。 我留下了第二種版本的命令,我也曾嘗試過,但已刪除。 我也無法填充目標並回顯。

setlocal enabledelayedexpansion

For %%s IN (111.111.0.2, 111.111.0.3, 111.111.9.2, 111.111.9.3) do (

for /L %%l IN (1,1,5) DO (

set Target=%e%%l.testedge.test.tld%

for /f "tokens=2 delims=:." %%G IN ('nslookup e%%l.testedge.test.tld %%s  ^|find "Name:"') do set %Result%%l%=%%G

REM set Result%%l=%for /f "tokens=2 delims=:." %%G IN ('nslookup e%%l.testedge.test.tld %%s  ^|find "Name:"') do echo %%G%

REM for /f "tokens=2 delims=:." %%G IN ('nslookup e%%l.testedge.test.tld %%s  ^|find "Name:"') do set !Result%%1!=%%G

ping 1.1.1.1 -n 1 -w 5000 > nul 

)

echo %%s,%Target%,%Result1%,%Result2%,%Result3%,%Result4%,%Result5%
)

nslookup結果看起來像

Name: e1.testedge.test.tld
Name: user-data.e1.testedge.test.tld
Name: user-data.e1.testedge.test.tld

因此,for循環將抓取e1,用戶數據和用戶數據。 我需要將它們分配給持久變量,以便在循環結束時回顯。 我計划追加到一個csv,以便我們可以以電子表格形式打開(通過20台服務器查找70多個地址)以供審核。 我希望輸出像

Nameserver  Target              1st   2nd     3rd         4th        5th
111.111.0.2,e1.testedge.test.tld,e1,user-data,user-data,user-data,user-data
111.111.0.2,e2.testedge.test.tld,e2,user-data,user-data,user-data,user-data
111.111.0.2,e3.testedge.test.tld,e3,user-data,user-data,user-data,user-data
111.111.0.2,e4.testedge.test.tld,e4,user-data,user-data,user-data,user-data

我認為這就是您要嘗試的。

@echo off
setlocal enableextensions enabledelayedexpansion

For %%s IN (111.111.0.2, 111.111.0.3, 111.111.9.2, 111.111.9.3) do (
    for /L %%l IN (1,1,5) DO (
        set "Target=e%%l.testedge.test.tld"
        for /f "tokens=2 delims=:." %%G IN ('nslookup !Target! %%s  ^|find "Name:"') do set "Result%%l=%%G"
    )
    echo %%s,!Target!,!Result1!,!Result2!,!Result3!,!Result4!,!Result5!
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM