2016-03-18 2 views
2

У меня есть сценарий, полезный при работе, чтобы изменить наш сетевой адаптер 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). Любые предложения ребята?

+0

Может ли он сломаться с '' stdout 'не распознан ... '? – Stephan

+0

Ах, что осталось от другого теста на код. Отредактировано. Были ли какие-либо другие проблемы с кодом? –

+0

попробуйте установить переменную, равную '% errorlevel%', перед выполнением другой команды и протестировать ее в 'if'. –

ответ

0
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, если это осуществляется.

+0

Добавлены ваши изменения, и, похоже, нет никаких заметных изменений. –

+0

Возможно, ю может показать, какой эффект вы наблюдаете, чего не ожидали. – Magoo

+0

Ну, из настроек адаптера изменения, я бы ожидал, что беспроводной сетевой адаптер будет отключен, если ранее был включен, или наоборот. –

0

не путайте вывод команды и %errorlevel%:

C:> echo yes|find "yes" /c 
1 

C:> echo %errorlevel% 
0 

C:> echo yes|find "no" /c 
0 

C:> echo %errorlevel% 
1 

%errorlevel% установлен, когда последняя команда (find) была неудачной, в то время как find /c возвращает количество выводов. Никаких выводов нет find /c возвращает 0 и %errorlevel% из 1.

+0

Ах спасибо Stephan за разъяснение моего вопиющего недоразумения !! –

Смежные вопросы