繁体   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