2013-12-09 140 views
1

我想讀取其中有空格的註冊表項。如果我讀了,我怎麼能跳過輸出中的REG_SZ。閱讀批處理文件中有空格的註冊表項?

我試圖

 
FOR /F "tokens=*" %%A IN ('%SystemRoot%\system32\REG.exe QUERY "HKLM\SOFTWARE\Wow6432Node\PostgreSQL\Installations\postgresql-9.0" /v "Base Directory" ^| find /i "REG_SZ"') DO set pghome=%%B 
echo %pghome% 
cd /d %pghome% 

輸出是

 
C:\Users\test>set pghome=%B 
C:\Users\test>echo %B 
%B 
C:\Users\test>cd /d %B 
The system cannot find the path specified. 

如何從註冊表中讀取路徑,並導航到它

+0

你是從命令行執行還是從批處理文件執行? – npocmaka

+0

來自批處理文件 – user

回答

2

如果您正在閱讀與所需值濾波線路對於REG_SZ,你會得到一行(對不起,我還沒有postgresql測試)

Base Directory REG_SZ C:\ProgramFiles\ ..... 

由於for /f命令是默認使用空間(多字符)作爲分隔符,你有什麼是用一條線,至少4代幣:BaseDirectoryREG_SZC:\...如果值包含空格,aditional的代幣將可用。

我們需要的是從第4和下列標記的所有信息,以便更好的選擇將是

for /f "tokens=3,*" %%a in .... 

這樣,%%a將舉行REG_SZ%%b該行的其餘部分。