1

尝试运行脚本时,我总是收到消息“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 小时的 try&error 后不再有任何线索。

4

1 回答 1

2

这是扩展 的问题%ValueValue%,因为在解析完整的括号块时会发生这种情况。
不是在执行时,而是在解析时ValueValue变量为空,所以你只得到echo哪个会 print 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
)
于 2012-08-31T08:12:07.880 回答