尝试运行脚本时,我总是收到消息“Echo is on”。
setlocal ENABLEEXTENSIONS
C:
cd ..
cd ..
reg query "HKLM\SYSTEM\CurrentControlSet\Services" | findstr /b "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DummyService" > "C:\servicePaths.txt"
FOR /f "delims=" %%g IN (servicePaths.txt) do (
set KEY_NAME="%%g"
set VALUE_NAME=ImagePath
FOR /F "tokens=1-3" %%A IN ('REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul') DO (
set ValueValue=%%C
)
echo %ValueValue%
pause
)
任何批大师都可以帮帮我吗?我知道它与级联for循环有关,但我找不到解决方案 - 3小时后再也没有任何线索和错误。
答案 0 :(得分:2)
这是扩展%ValueValue%
的问题,因为在解析完整的括号块时会发生这种情况。
不是在执行时,但在解析时ValueValue
变量为空,因此只有echo
才能打印echo is on
。
只需将其更改为延迟扩展
@echo off
setlocal EnableDelayedExpansion
C:
cd ..
cd ..
set VALUE_NAME=ImagePath
reg query "HKLM\SYSTEM\CurrentControlSet\Services" | findstr /b "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DummyService" > "C:\servicePaths.txt"
FOR /f "delims=" %%g IN (servicePaths.txt) do (
set "KEY_NAME=%%g"
FOR /F "tokens=1-3" %%A IN ('REG QUERY !KEY_NAME! /v !VALUE_NAME! 2^>nul') DO (
set ValueValue=%%C
)
echo !ValueValue!
pause
)