簡體   English   中英

如何在Windows Batch中傳遞數組參數?

[英]How to passing in array parameter in windows batch?

我正在嘗試在批處理文件中運行以下命令:

wmic nicconfig where macaddress=somemacaddr call SetDNSServerSearchOrder (an array paramter)

例如:

set dnslist[1]="172.12.3.1"
set dnslist[2]="222.123.2.1"
...
set dnslist[x]="135.132.1.2"

在運行批處理之前,我們不知道dnslist大小。 我們如何將dnslist直接傳遞給SetDNSServerSearchOrder

批處理文件本身沒有數組。 您所擁有的只是一組具有相同前綴的環境變量。 沒什么特別的。

如何將它們傳遞給命令取決於命令(例如,它們是用空格分隔的,即單個參數,還是用逗號分隔,或完全其他?)。 您需要從那些與程序期望的格式相匹配的變量中創建一個字符串,例如,當它們應該用空格分隔時,請按以下方式創建一個字符串:

setlocal enabledelayedexpansion
for /f "delims==" %%A in ('set dnslist[') do set List=!List! %%B

wmic nicconfig where macaddress=somemacaddr call SetDNSServerSearchOrder %List%

對於不同的定界符也是如此。 理想情況下,應該在腳本開始時就啟用延遲擴展。 通常,在其中間創建新的本地環境沒有用。

如果要為“列表”中的每個條目調用一次命令,則無需首先創建以定界符分隔的列表,而只需直接與條目一起調用命令即可。

暫無
暫無

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

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