本文最后更新于 61 天前,其中的信息可能已经有所发展或是发生改变。
方案一:输入1关闭以太网 1并打开WLAN,输入2相反
@echo off chcp 65001 >nul :: 自动申请管理员权限 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( echo Requesting admin privileges... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" & exit /B :gotAdmin :: 主菜单 :menu cls echo Network Interface Manager echo -------------------------- echo 1. 国外 Disable Ethernet 1 and Enable WLAN echo 2. 国内 Enable Ethernet 1 and Disable WLAN echo 3. Exit set /p choice=Enter number (1-3): if "%choice%"=="1" goto disableEthernetEnableWLAN if "%choice%"=="2" goto enableEthernetDisableWLAN if "%choice%"=="3" exit goto menu :disableEthernetEnableWLAN netsh interface set interface name="以太网" admin=disable netsh interface set interface name="WLAN" admin=enable echo Ethernet 1 disabled and WLAN enabled! timeout /t 2 >nul goto menu :enableEthernetDisableWLAN netsh interface set interface name="以太网" admin=enable netsh interface set interface name="WLAN" admin=disable echo Ethernet 1 enabled and WLAN disabled! timeout /t 2 >nul goto menu
方案二:通过两层命令,控制不同的网络接口
@echo off chcp 65001 >nul :: 自动申请管理员权限 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( echo Requesting admin privileges... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" & exit /B :gotAdmin :: 主菜单 :menu cls echo Network Interface Manager echo -------------------------- echo 1. 以太网 1 echo 2. 以太网 2 echo 3. WLAN echo 4. Exit set /p choice=Enter number (1-4): if "%choice%"=="1" set interface="以太网" && goto operation if "%choice%"=="2" set interface="以太网 2" && goto operation if "%choice%"=="3" set interface="WLAN" && goto operation if "%choice%"=="4" exit goto menu :: 操作菜单 :operation cls echo Selected Interface: %interface% echo -------------------------- echo 1. Disable echo 2. Enable echo 3. Back echo 4. Exit set /p action=Choose action (1-4): if "%action%"=="1" (netsh interface set interface %interface% admin=disable && echo %interface% disabled!) if "%action%"=="2" (netsh interface set interface %interface% admin=enable && echo %interface% enabled!) if "%action%"=="3" goto menu if "%choice%"=="4" exit timeout /t 1 >nul goto menu
小意外
echo命令中仅作为输出,下面的错误不应该呀!
打开执行追踪,逐步分析。发现执行时,其中的一个echo被吞了???!!
思考原因
- 因存在中文字符,文本格式有问题?UTF-8格式,没毛病呀!
- echo语法不对?这也不是呀!
- 代码其他部分的干扰?其他地方没事呀!
- ????
最后发现,这一行中汉字个数为偶数时(或是汉字后面随意加上可见两个字符),运行正常!啊!!!(无奈,鄙人不才,不跟你在这耗,走了走了)
其实,我的硬件就叫“以太网”,由于上面的原因,便修改成“以太网 1”。