我想读取其中有空间的注册表项。如果我阅读,如何跳过输出中的 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.
如何从注册表读取路径并导航到它
最佳答案
如果您正在读取包含 REG_SZ
所需值过滤的行,您将得到一行(抱歉,我没有 postgresql 来测试)
Base Directory REG_SZ C:\ProgramFiles\ .....
由于 for/f
命令默认使用空格(和更多字符)作为分隔符,因此您所拥有的一行至少包含 4 个标记:Base
、Directory
、REG_SZ
、C:\...
,如果值包含空格,则将提供其他 token 。
需要的是第四个及后续标记的所有信息,因此更好的选择是
for /f "tokens=3,*" %%a in ....
这样,%%a
将保存 REG_SZ
和 %%b
该行的其余部分。
关于windows - 读取批处理文件中有空间的注册表项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20470402/