For loop 批处理:尝试输出可变内容时,ECHO始终处于打开状态
在尝试运行脚本时,我总是收到消息“Echo已打开”For loop 批处理:尝试输出可变内容时,ECHO始终处于打开状态,for-loop,batch-file,echo,For Loop,Batch File,Echo,在尝试运行脚本时,我总是收到消息“Echo已打开” 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
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个小时的尝试和错误后不再有任何线索。这是扩展
%ValueValue%
的问题,因为解析完整的括号块时会发生这种情况。不是在执行时,而是在解析时,
ValueValue
变量为空,因此您只会得到echo
,它将打印echo处于打开状态
只需将其更改为延迟扩展
@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
)
您可能还希望在脚本顶部添加@ECHO OFF
。