无法在批处理文件中运行控制台程序

问题描述 投票:0回答:2

我有一个名为 run.bat

的小命令行

我想用这样的命令更改我的 IP 地址设置

运行.bat

:: netsh interface ipv4
netsh
interface
ip
:: Change ip address
set address "Ethernet" static 192.168.30.77 255.255.255.0 192.168.30.2

当我直接在 CMD 中输入时,该命令按我的预期工作,但当我将其放入 run.bat 时则不起作用 我确信我已经使用管理员访问权限运行了它

windows batch-file
2个回答
0
投票

它可以在命令行上工作,因为您启动

netsh
(查看提示符如何变化),然后直接与
netsh
程序交互(您最终应该
exit
)。它在批处理文件中不起作用,因为它执行第一个命令
netsh
- 并等待直到完成(当您键入
exit
时就会发生)。然后你的批处理文件尝试执行下一行,但是
ip
不是有效的命令...

但是

netsh
还有一种“直接模式”:只需输入一行:
netsh interface ip set address "Ethernet" static 192.168.30.77 255.255.255.0 192.168.30.2
(在批处理文件和命令行中都可以使用)


0
投票

关于通过批处理脚本设置 DNS 服务器的问题 - 当您使用 netsh 设置 DNS 服务器时,它会尝试验证它。由于某种原因,此验证过程在命令提示符中执行时工作正常,但在批处理脚本中失败。

如果您确定服务器正确,您可以使用“validate=no”参数绕过验证检查,只需将其添加到命令末尾,如下所示:

netsh interface ip set dnsservers name="lan" static 192.168.30.2 validate=no  
netsh interface ip add dns name="lan" 8.8.8.8 index=2 validate=no
© www.soinside.com 2019 - 2024. All rights reserved.