读取批处理文件中有空格的注册表项?

时间:2013-12-09 12:13:48

标签: windows batch-file cmd

我想阅读其中有空格的注册表项。如果我读了,我怎么能跳过输出中的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.

如何从注册表中读取路径并导航到它

1 个答案:

答案 0 :(得分:2)

如果您正在阅读具有REG_SZ所需值过滤的行,您将得到一行(抱歉我没有postgresql来测试)

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

由于for /f命令默认使用空格(以及更多字符)作为分隔符,因此您拥有的行至少包含4个令牌:BaseDirectory,{ {1}},REG_SZ如果值包含空格,则可以使用aditional令牌。

我们需要的是来自第4和第4个令牌的所有信息,因此更好的选择是

C:\...

这样,for /f "tokens=3,*" %%a in .... 将保留%%aREG_SZ其余部分。