Windows 用于启用/禁用网络适配器的批处理文件
我有一个脚本,它在工作中非常有用,可以用来更改我们的LAN适配器Static/DHCP,它工作得很好。但是,在网络上使用命令时,我们确实需要偶尔禁用网络适配器(在不同网络上发生冲突的情况下)。 这是我为enable/disable命令准备的代码Windows 用于启用/禁用网络适配器的批处理文件,windows,batch-file,cmd,Windows,Batch File,Cmd,我有一个脚本,它在工作中非常有用,可以用来更改我们的LAN适配器Static/DHCP,它工作得很好。但是,在网络上使用命令时,我们确实需要偶尔禁用网络适配器(在不同网络上发生冲突的情况下)。 这是我为enable/disable命令准备的代码 :2 @echo off netsh wlan show networks | FIND "Wireless network connection" /I /C >NUL 2>NUL IF %errorlevel% equ 1 (netsh
:2
@echo off
netsh wlan show networks | FIND "Wireless network connection" /I /C >NUL 2>NUL
IF %errorlevel% equ 1 (netsh interface set interface "Wireless network connection" DISABLED)
IF %errorlevel% equ 0 (netsh interface set interface "Wireless network connection" ENABLED)
exit /b
当我单独运行netsh命令时,它确实正确执行,这意味着我的if语句有问题
启用网络适配器时:
netsh wlan show networks | FIND "Wireless network connection" /I /C
1
禁用网络适配器时:
netsh wlan show networks | FIND "Wireless network connection" /I /C
0
运行整个代码时,每个run-through(无论无线网络适配器的状态如何,都返回1)。
有什么建议吗
echo Errorlevel was %errorlevel%
IF %errorlevel% equ 1 (
echo was enabled
netsh interface set interface "Wireless network connection" DISABLED
) else (
echo was disabled
IF %errorlevel% equ 0 (
netsh interface set interface "Wireless network connection" ENABLED
)
)
正如您目前使用的,如果第一个
netsh
的结果生效,第二个errorlevel
将解释第一个netsh
的结果。不要混淆命令输出和%errorlevel%
:
C:> echo yes|find "yes" /c
1
C:> echo %errorlevel%
0
C:> echo yes|find "no" /c
0
C:> echo %errorlevel%
1
当最后一个命令(
find
)失败时,设置了%errorlevel%
,而find/c
返回查找结果的计数。无发现意味着find/c
返回0
和%errorlevel%
为1。可能会中断“stdout”未被识别…
?对代码进行不同测试后留下的Ah。删去。代码会有任何其他问题吗?在执行另一个命令之前,请尝试将变量设置为等于%errorlevel%
,并在if
中对其进行测试。我想这不是if的一部分,也不是基于的条件:2
在开始时将变量设置为等于%errorlevel%似乎没有任何问题效果。我假设我是要更改if以检查变量,而不是*errorlevel%添加了您的更改,但似乎仍然没有任何明显的更改。也许yu可以揭示您观察到的您没有预料到的效果。通过更改适配器设置,我希望无线网络适配器在以前启用时被禁用,反之亦然。因为我们不能太容易地回头看,也许您可以在适配器启用后再禁用的情况下发布初始netsh
的响应?在输出中编辑谢谢Stephan澄清了我明显的误解!!