我有一個簡單的ini文件...真的只是一個key = value文件,我想用它來設置我的腳本的變量。無setlocal的文件中循環動態變量的批處理文件?
我的ini文件:
DATABASE=snoopy
我的批處理文件代碼
@echo off
SET DATABASE=woodstock
FOR /f "tokens=1,2 delims==" %%a in ('C:\mycfg.ini') do (
echo a=%%a
echo b=%%b
pause
SET %%a=%%b
ECHO DATABASE=%DATABASE%
)
回聲a和b是正確的,它顯示
a=DATABASE
b=snoopy
但是,當時我贊同結束調用SET %% a = %% b之後調用%DATABASE%b 它仍顯示
DATABASE=woodstock
如果我使用延遲擴展,它可以工作,但只能在本地。我需要它覆蓋全球,所以我不明白爲什麼這不應該工作。
你能解釋一下'local'與'global'是什麼意思嗎? 「local」是當前的CMD窗口,「global」是從「開始」菜單*(例如,所有未來的CMD窗口)打開新的CMD窗口時設置的一組環境變量?順便說一句 - 你將無法修改其他已經打開的CMD窗口。 –
我的意思是使用SetLocal/EndLocal ..實際上考慮它,我在for循環之前使用SetLocal ..也許我應該使用它在文件的頂部。我會嘗試 – Dss
當您啓用延遲擴展時,是否更改了回顯以使用延遲擴展運算符? 'ECHO DATABASE =!DATABASE!' – indiv