我创建了一个脚本来更改我的IP
地址/掩码和VLAN ID
接口,但问题是为了更改VLAN ID
,我需要执行一个PowerShell
命令。我的包含接口名称的变量包含一个空格,所以我需要把它放在引号中。问题是我需要为相同的 插入两个变量interfaceName
,一个带有单引号用于 Powershell 命令,另一个用于批处理netsh
命令,否则会出错。这是我的批处理文件:
:: Configuration Variables
set ifName='Ethernet 2'
set connectionName="Ethernet 2"
set ipAddress=10.88.167.27
set subnetMask=255.255.255.240
set vlanID=100
:: set defaultGateway=x.x.x.x
:: set primaryDNS=x.x.x.x
:: set alternateDNS=x.x.x.x
:: Change of IP address and NetMask ::
netsh interface ipv4 set address name=%connectionName% source=static addr=%ipAddress% mask=%subnetMask%
:: Change VLAN ID ::
powershell -Command "& {Set-NetAdapter -Name %ifName% -VlanID %vlanID% -Confirm:$false}"
echo The VLAN ID of %ifName% has been successfully changed to %vlanID%
pause > null
我的批处理脚本运行良好,但我只想为接口名称设置一个变量,而不是两个。我的问题是:
如果我ifName
在更改 IP 地址命令中使用,我会收到以下错误:The filename, directory name, or volume label syntax is incorrect.
.
如果我使用connectionName
带双引号的 for PowerShell 命令,则会出现以下错误:
Set-NetAdapter : A positional parameter cannot be found that accepts argument '2'.
At line:1 char:4
+ & {Set-NetAdapter -Name Ethernet 2 -VlanID 100 -Confirm:$false}
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-NetAdapter], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Set-NetAdapter
我什至尝试将 Powershell 命令用单引号括起来,并在里面使用connectionName
如下:
powershell -Command '& {Set-NetAdapter -Name %connectionName% -VlanID %vlanID% -Confirm:$false}'
但网络接口 VLAN 保持不变。
使用
set "varname=varvalue"
语法模式设置变量,并在必要时使用双引号作为echo "%varname%"
. 然后,您的代码片段应如下所示: