WIN2K8:在一行中运行两个netsh命令;遇到语法错误

时间:2013-06-13 20:33:33

标签: windows scripting netsh

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

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

1 个答案:

答案 0 :(得分:0)

马特,

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

如果您仍然面临此问题,请回复一些有关您尝试实现的内容以及您尝试过的方法的更多信息,我们可以选择其他方法。

- 约翰。