Windows批处理中的变量名

Windows批处理中的变量名,windows,batch-file,Windows,Batch File,这里有很多关于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 R

这里有很多关于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

我做错了什么,或者说,有可能吗?

这是你所期待的吗

@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

几乎,这些变量被称为ZZRPRISO、ZZRPRPPIC、ZZRPR000等等。。。我需要不使用zzz命名它们,因为它们是由我无法控制的第三方应用程序访问的。如果我删除循环中的zzz,它根本不会设置任何变量。如果在两个位置都删除
zzz
,它将创建变量,但不会很容易看到它们被列出。
@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