我的剧本(a.bat):
SETLOCAL ENABLEDELAYEDEXPANSION
if "%1"=="on" (
FOR /F "tokens=1" %%a in ('netsh interface show interface ^| findstr Local') DO (set lanst=%%a)
set lanst=%lanst: =%
echo Local Area Connection: %lanst%
FOR /F "delims=: tokens=2" %%b in ('netsh wlan show interface ^| findstr SSID ^| findstr /v B') DO (set curwifi=%%b)
set curwifi=%curwifi: =%
echo Current Wifi: %curwifi%
)
但是当我删除if语句时,脚本是:
SETLOCAL ENABLEDELAYEDEXPANSION
echo %1
FOR /F "tokens=1" %%a in ('netsh interface show interface ^| findstr Local') DO (set lanst=%%a)
set lanst=%lanst: =%
echo Local Area Connection: %lanst%
FOR /F "delims=: tokens=2" %%b in ('netsh wlan show interface ^| findstr SSID ^| findstr /v B') DO (set curwifi=%%b)
set curwifi=%curwifi: =%
echo Current Wifi: %curwifi%
根据输出,我发现,在if + for的情况下,似乎do()中的语句不会被执行。 为什么会这样,以及如何解决?
先谢谢!
答案 0 :(得分:2)
尝试:
SETLOCAL ENABLEDELAYEDEXPANSION
if "%1"=="on" (
FOR /F "tokens=1" %%a in ('netsh interface show interface ^| findstr Local') DO (
set lanst=%%a
)
set lanst=!lanst: =!
echo Local Area Connection: !lanst!
FOR /F "delims=: tokens=2" %%b in ('netsh wlan show interface ^| findstr SSID ^| findstr /v B') DO (
set curwifi=%%b
)
set curwifi=!curwifi: =!
echo Current Wifi: !curwifi!
)
这里有关于delayed expansion
的更多信息