2014-09-11 2 views
1

여기에 Windows 배치 파일의 변수 내부 변수에 대한 많은 주제가 있으며이를 이해하려고했습니다. 그래서 나는이 코드로 끝날하지만이 무한 루프처럼 보이는 :Windows 배치의 변수 이름

setlocal enabledelayedexpansion 

for /l %%a in (RPR SAM) do (
    for /l %%w in (000 iso pic) do (
    set /a a!w!=H:\MyPath\!%%a\!%%a!%%w 
) 
) 

결과는 다음과 같은 변수해야한다 : 내가 잘못하고, 또는하고 무엇

RPR000=H:\MyPath\RPR\RPR000 
RPRiso=H:\MyPath\RPR\RPRiso 
RPRpic=H:\MyPath\RPR\RPRpic 

SAM000=H:\MyPath\SAM\SAM000 
SAMiso=H:\MyPath\SAM\SAMiso 
SAMpic=H:\MyPath\SAM\SAMpic 

그것도입니다, 가능한?

답변

1

당신이 기대하는 것입니까?

@echo off 
for %%a in (RPR SAM) do (
    for %%w in (000 iso pic) do (
    set zzz%%a%%w=H:\MyPath\%%a\%%a%%w 
) 
) 
set zzz 
pause 
+0

거의, 변수는 zzzRPRiso, zzzRPRpic, zzzRPR000라고되고 그들이 타사 응용 프로그램에 액세스하고 있기 때문에 등등 ... 나는, ZZZ없이 익명을 그들을 필요로하는 내가 할 수있는 ' 제어. 루프에서 zzz를 제거하면 변수가 전혀 설정되지 않습니다. – RBasniak

+0

두 곳에서'zzz'를 제거하면 변수를 쉽게 생성 할 수 있습니다 - 단지 쉽게 나열되어있는 것을 볼 수 없습니다. – foxidrive

0
@echo off 
set /a a=0 
:@ 
if 1%1==1 (
set Last=%0 
GOTO :@@ 
) 
set VarB=%VarB% %1 
@shift 
goto :@ 
:@@ 
set /a a=%a%+1 
FOR /F "TOKENS=%a%* DELIMS= " %%G IN ('echo %VarB%') do (
FOR /F "TOKENS=1 DELIMS= " %%A IN ('echo %%G') do (

set Var%a%=%%G 
set VarA%a%=%%H 
set VarR=%%G 
) 
) 
if 1%VarR%==1%Last% goto :A 
goto :@@ 
:A 
echo |echo %%Var%a%%% 
    REM In Batch Scripts use Double Percent on the outside like dealing with a for statement. 
    REM In CMD.exe just use echo [The Character Pipe] echo %Var%a%% 
exit