我希望批處理腳本從配置文件讀取變量。
而我想在配置文件中使用var。
所以我把下面的內容到我的配置文件eval.ini
:批處理腳本如何識別字符串中的變量
所以,我怎樣才能使這些增值經銷商在配置文件中的批處理腳本識別。
在那一刻,我如何讓它工作是閱讀行「eval.ini」行,並拆分一條線變成了變數名稱和VAR值。
Galaxy:=%Universal%\Galaxy ==>> Galaxy %Universal%\Galaxy
,並把它們變成一個臨時的批處理腳本混合likd這樣的:
SET "Galaxy=%Universal%\Galaxy"
然後我打電話臨時批處理腳本,設置所有的增值經銷商。它的工作原理。
看起來不錯,但我只是不喜歡創建臨時批處理腳本文件來做到這一點。
請告訴我任何其他方式來做到這一點。
我的批處理腳本 「eval.bat」:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
:SOA
SET "confile=%~dpn0.ini"
SET "setvar=%temp%\%~n0_setvar.bat"
SET "varlist="
ECHO/>%setvar%
FOR /F "usebackq tokens=1,* eol=; delims=:=" %%a in ("%confile%") do (
IF NOT "!varlist!" == "" (
SET "separator= "
) else (
SET "separator="
)
SET "varlist=!varlist!!separator!^"%%a^""
ECHO/SET "%%a=%%b">>%setvar%
)
CALL "%setvar%" && del/q/f "%setvar%" || GOTO:EOA
FOR %%a in (%varlist%) do (
ECHO/%%~a = !%%~a!
)
:EOA
ENDLOCAL
EXIT/B
OUTPUT:
Universal = C:\Universal
Galaxy = C:\Universal\Galaxy
Sagittarius = C:\Universal\Sagittarius
Canis Major = C:\Universal\Canis Major
Sun = C:\Universal\Galaxy\Sun
Sirius = C:\Universal\Canis Major\Sirius
您是否堅持使用':='?如果你只用'='來代替,那麼有一個非常簡短的解決方案。 – Stephan
@Stephan如果我用'='會怎麼樣? – mts
Argh - 我監督,你使用新定義的變量作爲新變量的子字符串。抱歉混淆。忘記我的評論。 – Stephan