delim选项卡不适用于批处理文件

时间:2014-10-10 05:58:35

标签: batch-file

查询

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 请让我知道出了什么问题

2 个答案:

答案 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%"