2012-08-08 75 views
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 

使用^逃跑,並添加的值是不工作,因爲命令處理器值進行解釋,爲「%瓦拉%」,而不是「C:\ Program Files文件

回答

3

您可以在這裏使用延遲擴展。

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

,或者在同一行,你可以通過CALL

... 
call set CONSN=%%%%~a%% 
+0

,工程使用一個額外的expaqnsion !!!!傑布,你有什麼不能做的嗎? – user1136386 2012-08-10 02:49:52