0

我编写了一个 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

有没有另一种方法可以附加第二个命令,所以它被解释为语法正确?我愿意接受建议!

4

1 回答 1

0

马特,

您是正确的,BladeLogic 会为每个语句启动单独的 shell,但是,根据您要实现的目标,有可能“说服”它在您的目标上远程运行完整的脚本。

如果您仍然面临这个问题,请回复一些关于您想要实现的目标以及您尝试过的方法的更多信息,我们可以寻找替代方案。

-约翰。

于 2014-01-06T16:09:40.183 回答