查询
reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CB708F54-6934-4636-8E3C-D10AD3A8231F} /v InstallLocation
返回
InstallLocation REG_SZ c:\Program Files (x86)\abcd\xyz\
我想获取c:\Program Files (x86)\abcd\xyz\
我无法获取我正在使用以下命令
for /f "tokens=3 delims= " %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CB708F54-6934-4636-8E3C-D10AD3A8231F} /v InstallLocation') do set ProductName=%%a
echo "%ProductName%"
我只得到c:\program
请让我知道出了什么问题
答案 0 :(得分:0)
您已将字符串拆分为空格并仅使用第三个标记,尝试在第三个标记后选择所有字符串:
for /f "tokens=3,* delims= " %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CB708F54-6934-4636-8E3C-D10AD3A8231F} /v InstallLocation') do set ProductName="%%a%%b"
答案 1 :(得分:0)
我无法重现你的行为,对我来说(Windows 7)reg.exe
不输出制表符,而是空格作为分隔符。
处理这种情况的“正确”方法是使用任何空格/制表符作为分隔符(for /f
中的默认行为),丢弃行中的第一个标记(InstallLocation
文字),检索第二个标记(REG_SZ
字面值)和第三个标记行中的剩余内容。
for /f "tokens=2,*" %%a in ('
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CB708F54-6934-4636-8E3C-D10AD3A8231F}" /v InstallLocation
') do set "ProductName=%%b"
echo "%ProductName%"