2012-08-30 7 views
1

난 항상 메시지 스크립트를 실행하려고 할 때 "에코에"를 얻고 출력 변수 콘텐츠를하려고 할 때 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 (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 
) 

는 일괄 전문가 나 좀 도와 주 시겠어요 .. 항상에 ? 나는 그것이를위한 루프 캐스케이드 함께 할 수있는 뭔가가 있다는 것을 알고 있지만, 나는 해결책을 찾을 수 없습니다 - 단서를 더 이상 3 시간 & 오류를 시도 후. 전체 괄호 블록 구문 분석 할 때 이런 일이 발생으로

답변

2

그것은는 %ValueValue%을 확대하는 문제입니다.
하지 않음 그것을 실행,하지만 당신은 단지 echoecho is on를 인쇄 할을 얻을 수 있도록 구문 분석 시간에 ValueValue 변수는 비어있는 경우.

단순히 지연 확장

당신은 아마 또한 스크립트의 상단에 '@ECHO OFF`를 추가 할
@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 
) 
+0

로 변경. – aphoria

+0

@aphoria 네, 그것은 좋은 생각 – jeb