我的脚本(a.bat):集不一样,如果蝙蝠脚本+工作中,即使设置ENABLEDELAYEDEXPANSION
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()中的语句似乎不会执行。 这是为什么,以及如何解决?
感谢先进!
延迟扩展是必要的情况下一个变量被修改,并且在代码parenthesised块阅读更多相关资讯; 'if'语句构造了这样一个块,所以你需要使用'!lanst!'而不是'%lanst%'。 – aschipfl
正确!谢谢! – Marslo