기 타 레마클로님 wifi on/off 스크립트 (수정) pnputil 추가
2023.06.20 11:55
예전에 레마클로님 강좌 팁 중 Wifitoggle 스크립트를 공유해준부분에서
약간 수정해 보았습니다. 메인 스크립트를 누르면 실행 스크립트를
만들어 주는 부분이 있었는데 파일 한개로 통합해 보았습니다.
출처:
https://windowsforum.kr/index.php?mid=lecture&search_keyword=wifi&search_target=title_content&document_srl=12789549
다운로드: WifiToggle.zip
레마클로님 이 주신 스크립트에서는 devcon.exe 이라든가
qgrep.exe 두개 파일로 WiFi 장치 확인 및 줄 확인을
하여 실행합니다. 최대한 명령줄을 줄여 봤습니다.
------------------------------------------------------------
@echo off
type "enable" >nul&&set "toggle=disable"||set "toggle=enable"
del /q "disable", "enable">nul&devcon hwids =net>"devconout"
qgrep -n -y "Wi-Fi wireless" "devconout">"qgrepout"
FOR /F "tokens=1* usebackq delims=:" %%a in ("qgrepout") do set /a WirelessLine=%%a+1&goto:Locate
:Locate
FOR /F "tokens=1* usebackq skip=%WirelessLine% delims=: " %%z in ("devconout") do set WirelessHID="%%z"&goto:Shutdown
:Shutdown
devcon %toggle% %WirelessHID%&echo %WirelessHID%>"%toggle%"
del /q "qgrepout", "devconout"
-------------------------------------------------------------
이렇게도 가능 하네요
txt 파일을 만들어서 WiFi 가 연결되었는지
확인 다른 프로그램들은 필요가 없음
-------------------------------------------------------------
@echo off
type "enable" >nul&&set toggle=disable||set toggle=enable
del /q "disable", "enable">nul&echo.>"%toggle%
netsh interface set interface name="Wi-Fi" admin=%toggle%
--------------------------------------------------------------
또다른 방법 기본 프로그램 netsh 사용 txt 파일을
만들지 않고 실행하며. 부가 프로그램 필요 없음
-------------------------------------------------------------
@echo off&chcp 437
for /f "tokens=2 delims= " %%a in ('netsh interface show interface ^| findstr "Wi-Fi"') do (
if "%%a"=="Connected" (set toggle=disable) else set toggle=enable)
netsh interface set interface name="Wi-Fi" admin=%toggle%
-------------------------------------------------------------
pnputil 추가
zerojiddu 님이 windows 에서는 pnputil 로
해야 잘된다고 하시기에 해봤는데
pnputil 에서는 wifi 활성화 비활성화 구문을
찾기가 어려워 netsh 로 구문을 찾고
pnputil 로 활성화 비활성화를 해보았습니다.
-------------------------------------------------------------
@echo off&chcp 437
for /f "tokens=2 delims= " %%a in ('netsh interface show interface ^| findstr "Wi-Fi"') do set connect=%%a
if "%connect%" equ "Connected" (set toggle=Disable) else (set toggle=Enable)
pnputil /enum-devices /class net | findstr /n "^" > pnputil
for /f "delims=:" %%a in ('findstr /c:" Wireless" pnputil') do set /a line=%%a-1
for /f "tokens=3 delims=:" %%a in ('findstr /b "%line%:" pnputil') do for %%b in (%%a) do set "device=%%b"
pnputil /%toggle%-device "%device%"&del /q pnputil
--------------------------------------------------------------
pnputil 만으로 한다면 아래와 같습니다.
--------------------------------------------------------------
@echo off&chcp 437
pnputil /enum-devices /class net | findstr /n "^" > pnputil
for /f "delims=:" %%a in ('findstr /c:" Wireless" pnputil') do set /a line=%%a-1
for /f "tokens=3 delims=:" %%a in ('findstr /b "%line%:" pnputil') do for %%b in (%%a) do set "device=%%b"
pnputil /enum-interfaces /enabled | findstr /c:"%device%" >nul
if %errorlevel% equ 0 (set toggle=Disable) else (set toggle=Enable)
pnputil /%toggle%-device "%device%"&del /q pnputil
--------------------------------------------------------------
댓글 [10]
-
cungice 2023.06.20 13:01
-
쭈니당 2023.06.20 14:11
수고하셨습니다. -
zerojiddu 2023.06.20 19:18 수고하셨습니다.
devcon 으로 드라이버를 정지시키면서 하셨네요.
* 마.소는 devcon 보다 pnputil 사용을 권장합니다.
이렇게 할수도 있습니다.
추가 .exe 전혀 필요없고
설정창 와이파이 버튼을 스크립트로 끄고 켜면 더 안전하고 간단합니다.
오토핫키처럼 단순히 SendKeys() 키보드 명령으로 하는게 아니라,
윈도우 API를 불러와서 작동되게 했습니다.
. .\Wifi-Button-OnOff.ps1 -status on
. .\Wifi-Button-OnOff.ps1 -status off
-
슈머슈마 2023.06.20 22:09
감사합니다. 잘 활용 하겠습니다. pnputil 이라는게 있는줄은 몰랐네요 드라이버 관련 도구 잊줄 알았는데 어떻게 사용하나요?
드라이버를 비활성화 시키는 건가요? -
zerojiddu 2023.06.20 22:22 pnputil 검색만 하셔도 잘 나와요.
님 스크립트에 devcon.exe 대신 원래 윈도우에 있는
pnputil 로 똑같이 드라이버 비활성화 돼요.
-
슈머슈마 2023.06.20 23:12
집에가서 해봐야겠네요 -
슈머슈마 2023.06.27 22:40
pnputil 이정도 면 괜찮을까요?
@echo off&chcp 437
for /f "tokens=2 delims= " %%a in ('netsh interface show interface ^| findstr "Wi-Fi"') do set connect=%%a
if "%connect%" equ "Connected" (set toggle=Disable) else (set toggle=Enable)
pnputil /enum-devices /class net | findstr /n "^" > pnputil
for /f "delims=:" %%a in ('findstr /c:" Wireless" pnputil') do set /a line=%%a-1
for /f "tokens=3 delims=:" %%a in ('findstr /b "%line%:" pnputil') do for %%b in (%%a) do set "device=%%b"
pnputil /%toggle%-device "%device%"&del /q pnputil
-
zerojiddu 2023.06.28 17:39 꺼졌다 켜졌다 잘 되네요.
근데 전 배치를 분석할 수준은 안되요.
배치를 공부하진 않아서요. 대충 훑어보는 정도입니다.
수고하셨습니다.
-
슈머슈마 2023.06.20 23:18
https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/pnputil-examples
이곳에 자세하게 설명이 되어 있네요 감사합니다. -
馬井理 2023.06.22 08:47
수고하셨습니다
수고 많으셨습니다. 감사합니다.