windows 启用/禁用网络适配器的批处理文件

06odsfpq  于 2023-02-13  发布在  Windows
关注(0)|答案(2)|浏览(292)

我有一个脚本,它在工作中很有用,可以改变我们的局域网适配器Static/DHCP,它工作正常。但是,我们确实需要偶尔禁用我们的网络适配器,当使用命令通过网络(在不同的网络冲突的情况下)。这是代码,我已经为使能/禁用命令。

: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

当运行整个代码时,每个都遍历(不管无线网络适配器的状态如何,都返回1)。

5jvtdoz2

5jvtdoz21#

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
 )
)

就像您目前所拥有的那样,如果第二个errorlevel生效,它将解释第一个netsh的结果。

nukf8bse

nukf8bse2#

不要混淆命令输出和%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。

相关问题