[英]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.