2013-07-17 2 views
0

"C : \ Program Files (x86) \ Stupid \ MS \"문자열을 다음 입력에서 어떻게 검색합니까?Windows 배치 파일의 문자열에서 하위 문자열을 검색하는 방법은 무엇입니까?

HKEY_CURRENT_USER\Software\Stupid\MS`  
    installpath REG_SZ C:\Program Files (x86)\Stupid\MS\` 

windows 박쥐 파일을 사용하십시오.

내 방법 :

@echo off 
Setlocal enabledelayedexpansion 
for /f "tokens=2,* delims=:" %%i in ('reg query "HKEY_CURRENT_USER\Software\Stupid\MS" /v "installpath"') do ( 
    echo %%i 
) 
pause 

결과가 내 XP에서 \Program Files (x86)\Stupid\MS\

답변

1
req query "HKEY_CURRENT_USER\Software\Stupid\MS" /v "installpath" 

수익률이

! REG.EXE VERSION 3.0 

HKEY_CURRENT_USER\Software\Stupid\MS  
installpath REG_SZ C:\Program Files (x86)\Stupid\MS 
(미안 해요 순간에 최근 더 아무것도하지 않음)

delim의 기본값 (공백)을 사용하면 실제로 필요한 세 번째 토큰과 다음 토큰이 있습니다. 마지막 줄. "third and following"은 tokens=3*입니다. 세 번째 토큰은 %% i에서 사용할 수 있으며 "%"는 %% j에서 사용할 수 있습니다. 이 편지는 자동으로 지정됩니다.

불행하게도 첫 번째 줄에는 세 번째 및 다음 토큰이 있으므로 첫 번째 줄을 제외해야합니다. eol 옵션을 사용하여 "!"로 시작하는 줄을 제외하면됩니다. "Setlocal enabledelayedexpansion"은이 litte 배치 파일에서 아무 것도 변경하지 않으므로 삭제했습니다.

요약 :이 나를 위해 작동합니다

@echo off 
for /f "eol=! tokens=3*" %%i in ('reg query "HKEY_CURRENT_USER\Software\Conceptworld\Piky\Settings" /v "installpath"') do echo %%i %%j 
+0

감사합니다. 정확하게 설명하겠다. – CCC

1

이 작동합니다 - 그것은 TAB을 말한다 곳에서 탭 문자를 넣고도 공간을 둡니다.

@echo off 
for /f "tokens=2,* delims=:TAB " %%i in ('reg query "HKEY_CURRENT_USER\Software\Stupid\MS" /v "installpath"') do ( 
    set "var=%%j" 
) 
echo "%var%" 
pause 
+0

감사합니다. 결과는 내가 원하는 바가 아닙니다. – CCC

+0

@iask %% i 대신 metavariable을 사용했습니다. 위의 코드가 편집됩니다. – foxidrive

+0

지금은 정확합니다. 나는 너의 대답을 투표한다. – CCC

관련 문제