0

我有一个名为“ VAR.bat ”的文件来设置变量:

SET VARa=C:\Program Files
SET VARb=C:\Program Files (x86)
set VARc=C:\ProgramData

我有一个名为“ SET.set ”的文件,其中仅包含变量名:

VARa
VARb
VARc

我想从这样的例程中调用集合:

 for /f "tokens=* delims= " %%a in ('type "SET.set"') do (
    SET CONSA=%%~a
    SET CONSN=%%^%%a%%
    CALL :CREATEVAR
    )
    :CREATEVAR
    if exist "%CONSN%" CALL :%CONSA%_detect
    exit /b

:VARa_detect
echo "%CONSN%"
exit /b

:VARb_detect
echo "%CONSN%"
exit /b

:VARc_detect
echo "%CONSN%"
exit /b

使用^转义并向值添加%不起作用,因为命令处理器将值解释为“ %VARa% ”而不是“ C:\Program Files

4

1 回答 1

3

您可以在此处使用延迟扩展。

setlocal EnableDelayedExpansion
for /f "tokens=* delims= " %%a in ('type "SET.set"') do (
    SET CONSA=%%~a
    SET CONSN=!%%~a!
    CALL :CREATEVAR
)

或者在同一行,您可以使用额外的 expaqnsionCALL

...
call set CONSN=%%%%~a%%
于 2012-08-09T09:19:23.247 回答