2013-10-01 2 views
0

Windows VM에서 테스트 할 수 있도록 .sh 스크립트를 .bat 파일로 다시 작성하려고합니다.For 루프 일괄 처리 문제

FOR/F 루프와 관련된 문제가 발생했습니다. 루프에서 설정 한 변수를 사용할 수 없기 때문에 이에 대해 정말 좌절하고 있습니다. 나는 한동안 주변을 둘러 보았고 지연된 확장을 가능하게 만들었습니다. 다음 코드 조각은 다음과 같습니다

; ;, RAMTAR, ADM1, PIN1, PIN2, KIC1, KICLENGTH,KID1, KIDLENGTH, RAMMSL 
000000, 17182320, 2387, 1116, 607038CA34A91FB1, 16, 607038CA34A91FB, 16, 0200 

내가 어떤 입력을 부탁드립니다 : 아래

setlocal ENABLEDELAYEDEXPANSION 
FOR /F "eol=; tokens=1,2,3,4,5,6,7,8,9,10 delims=, " %%i in (%SOutPath%) do (

SET sKic1Length = 20 
SET sRAMTar = %%i 
SET admCode = %%j 
SET pin1Code = %%k 
SET pin2Code = %%l 
SET sKic1 = %%m 
SET sKic1Length = %%n 
SET sKid1 = %%o 
SET sKid1Length = %%p 
SET sRAMMSL=%%r 

IF sKic1Length EQU 16 SET sKic1Length=11 
IF sKic1Length EQU 32 SET sKic1Length=15 
IF sKic1Length EQU 48 SET sKic1Length=19 
::This echo outputs 'Echo is off' so variable is empty 
@echo %sKic1Length% 

) 
::Also returns same 
ECHO %sKid1Length% 

내가 루프에 읽고 있어요 파일입니다.

고맙습니다.

답변

1

당신은 사용해야합니다! 대신 루프 마지막 에코는 아무 것도 반환하지 않는 경우

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
for /f "eol=; tokens=1,2,3,4,5,6,7,8,9,10 delims=, " %%i in (%SOutPath%) do (
    set "sKic1Length=20" 
    set "sRAMTar=%%i" 
    set "admCode=%%j" 
    set "pin1Code=%%k" 
    set "pin2Code=%%l" 
    set "sKic1=%%m" 
    set "sKic1Length=%%n" 
    set "sKid1=%%o" 
    set "sKid1Length=%%p" 
    set "sRAMMSL=%%r" 
    if "!sKic1Length!" equ "16" set "sKic1Length=11" 
    if "!sKic1Length!" equ "32" set "sKic1Length=15" 
    if "!sKic1Length!" equ "48" set "sKic1Length=19" 
    echo.!sKic1Length! 
) 
echo.%sKid1Length% 
endlocal 

에서 ENABLEDELAYEDEXPANSION에 %의, 그 다음 나는 마지막 반복 %%에서 p가 비어 있다고 가정한다.

+0

대단히 고맙습니다. 문제가 해결되었습니다. – ChrisA