我编写了一个 Windows 脚本来更改 NIC 接口指标,并且需要将其压缩为两个命令,因为它的执行方式。长话短说,我支持使用远程代理调用系统命令的应用程序 (BladeLogic Server Automation [BSA])。
我假设当 BSA 运行脚本时,每个命令都在单独的命令提示符环境中执行,因此用于存储路由字符串的环境变量不是持久的。
for /f "delims=" %a in ('netsh interface ipv4 dump ^| find "nexthop=1.1.1.1"') do @set VAR1=%a
netsh interface ipv4 set %VAR1:~4% metric=200
for /f "delims=" %a in ('netsh interface ipv4 dump ^| find "nexthop=2.2.2.1"') do @set VAR2=%a
netsh interface ipv4 set %VAR2:~4% metric=500
我已经压缩了脚本,并在命令提示符下对其进行了测试。
for /f "delims=" %a in ('netsh interface ipv4 dump ^| find "nexthop=1.1.1.1"') do @set VAR1=%a && netsh interface ipv4 set %VAR1:~4% metric=200
for /f "delims=" %a in ('netsh interface ipv4 dump ^| find "nexthop=2.2.2.1"') do @set VAR2=%a && netsh interface ipv4 set %VAR2:~4% metric=500
不幸的是,它似乎无法识别第二个命令的正确语法:
The following command was not found: interface ipv4 set %VAR1:~4% metric=200
有没有另一种方法可以附加第二个命令,所以它被解释为语法正确?我愿意接受建议!