2012-04-27 74 views
4

我正試圖將BAT值讀入BAT文件中的環境變量。例如,如何將REG值讀入環境變量

REG HKLM \系統\ CurrentControlSet \服務\事件日誌/ V的ImagePath

我可以得到REG命令的整個輸出字符串轉換成一個環境變量是這樣的:

FOR /F "usebackq delims==" %%a in (`REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog" /v ImagePath`) DO set ImagePath=%%a 

然而,此設置環境變量到整行,即

ImagePath REG_EXPAND_SZ C:\Windows\system32\services.exe 

我想要的環境變量以僅由路徑部分,即,

C:\Windows\system32\services.exe 

感謝您的任何提示。

回答

7
for /f "tokens=2*" %%A in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog" /v ImagePath') DO set ImagePath=%%B 

默認分隔符是空格和製表符;無需改變它。 TOKENS = 2 *將第二個標記存儲在%% A中,將剩餘的行存儲在%% B中。

關於您的原始代碼 - 在您的情況下使用USEBACKQ沒有任何好處。另外,如果代碼中包含=,則代碼不會保留整行,因爲您使用該代碼作爲分隔符。

回答評論
如果你能依靠的事實,路徑不包含任何空格,那麼你可以簡單地使用「標記= 3」,並保存%%一個。但我不相信這一點。相反,我會用

for /f "tokens=2*" %%A in ('REG QUERY "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog" /v ImagePath') DO (
    for %%F in (%%B) do (
    set ImagePath=%%F 
    goto :break 
) 
) 
:break 
+0

太棒了。謝謝。剛剛意識到我必須更進一步。可以說ImagePath是這樣的: 「C:\ Windows \ system32 \ services.exe」參數 – 2012-04-28 00:03:44

+0

@Neilw - 已更新的答案 – dbenham 2012-04-28 02:12:32