2010-07-06 62 views
4

我想從bat文件中讀取註冊表字符串值,然後將相應的值分配給變量。 我試過如下:如何從批處理文件中讀取註冊表字符串值

FOR %%a in ('REG QUERY HKLM\SOFTWARE\MathWorks\MATLAB\7.10 /v MATLABROOT') DO set MATLAB=%%a 
echo %MATLAB% 

,但它不工作。

+0

可能的重複[如何從批處理腳本中獲取註冊表項的值?](http:/ /stackoverflow.com/questions/445167/how-can-i-get-the-value-of-a-registry-key-from-within-a-batch-script) – Pondlife 2012-10-24 18:51:47

回答

6

如果該值(在這種情況下巴茲)的名稱不包含空格,你可以這樣做

FOR /F "skip=4 tokens=2,*" %%A IN ('REG.exe query "HKLM\software\foo\bar" /v "baz"') DO set "MATLABROOT=%%B" 

如果名稱是動態的,只有在運行時知道,你將不得不使用令牌= *並解析%% A查找「REG_」,以便知道數據的起始位置......

+0

很確定,如果有路徑中的空間。 – 2014-03-12 12:40:58

+0

@CraigRinger:2,*表示%% B變成行的其餘部分。更大的問題是skip = 4之類的東西,因爲它取決於操作系統版本等。不管你做什麼,在批處理文件中執行這種操作都會變得很糟糕...... – Anders 2014-03-13 15:25:45

+2

奇怪,是不是。你會認爲「獲取註冊表值到變量中」將是批處理文件中最常見的需求之一。 – 2014-03-14 00:06:13

2

reg打印出的不僅僅是非常值你感興趣的方式了。據我所看到的,給予skip=2tokens=3選項for可能會奏效。

但是,如果有更多的空間比預期更多,可能需要比這更詳細一點。

相關問題