2017-11-15 4 views
1

다음 코드를 사용하고 있습니다. 루프 외부에서 array.bat를 호출하면 다른 출력 값을 사용할 수 있습니다. 나는 전화 도중 사용했다.출력 변수의 값이 루프 내부에서 변경되지 않는 이유 - Windows Batch

EPB 
ENF 
7 
ETO 
0 
ETO 
1 
ETO 
2 
ETO 
3 
ETO 
4 
ETO 
5 
ETO 
6 
ETO 
7 

만 그쪽 마지막 값 printted되고 :

@echo off 

set empresas[0]=EPB 
set empresas[1]=ENF 
set empresas[2]=ESE 
set empresas[3]=ESS 
set empresas[4]=EBO 
set empresas[5]=EMG 
set empresas[6]=EMT 
set empresas[7]=ETO 

call array.bat len empresas length 
call array.bat getitem empresas 0 empresa1 
echo %empresa1% 
call array.bat getitem empresas 1 empresa1 
echo %empresa1% 
echo %length% 


for /l %%x in (0, 1, %length%) do (

    call array.bat getitem empresas %x% empresa3 

    echo %empresa3% 
    echo %%x 
) 

그 코드는 출력을 생성한다.

+2

[Windows 일괄 변수가 설정되지 않음] 가능한 복제본 (https://stackoverflow.com/questions/9681863/windows-batch-variables-wont-set) – SomethingDark

+0

동일한 질문이 아닙니다. 값은 루프 내에서만 변경되지 않습니다. –

+1

정확히 같은 질문입니다. 지연 확장이 활성화되어 있지 않으면 코드 블록 내에 설정된 변수는 코드 블록 끝까지 업데이트되지 않습니다. – SomethingDark

답변

0

delayedexpansion 다시 트랩합니다. SO에서 delayed expansion을 검색하십시오.

%%x가 metavariable %%x의 값입니다

call array.bat getitem empresas %%x empresa3 

CALL echo %%empresa3%% 

참고하십시오. %x%환경의 내용%의 추가 CALL와 배가가 필요한 이유에 대해 delayedexpansion는 (여러 가지 솔루션 중 하나를 설명합니다 읽기

(코드에 따라 정의되지 않은) 변수 x)

관련 문제