通过批处理文件从注册表值获取完整且正确的路径

时间:2014-10-21 10:16:47

标签: batch-file msbuild

我需要帮助才能通过批处理文件从注册表值获取完整且正确的文件夹路径。 我有这样的代码:

@echo off
setlocal ENABLEEXTENSIONS
set R_MSBUILD_KEY="\\.\HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\12.0"
set R_MSBUILD_VALUE="MSBuildToolsPath"

REM Get MSBUILD path from registry
FOR /f "tokens=1,2,3,4" %%A IN ('REG QUERY %R_MSBUILD_KEY% /v %R_MSBUILD_VALUE% 2^>nul') DO SET MSBUILD_PATH=%%C%%D

if defined MSBUILD_PATH (
    @ECHO MSBUILD = %MSBUILD_PATH%\MSBuild.exe
) else (
    @echo %R_MSBUILD_KEY%\%R_MSBUILD_VALUE% not found.
)

作为回复,我收到以下路径:

MSBUILD = C:\ProgramFiles\MSBuild.exe

而不是C:\Program Files (x86)\MSBuild\12.0\bin\amd64\MSBuild.exe

我的问题是我无法理解如何检索完整且正确的路径(文件夹中的空格实际上是这样)。如何在我的情况下接收完整且正确的路径?

1 个答案:

答案 0 :(得分:0)

如果没有看到reg查询输出,我无法确定,但看看这行是否为您提供了正确的输出。

FOR /f "tokens=1,2,*" %%A IN ('REG QUERY %R_MSBUILD_KEY% /v %R_MSBUILD_VALUE% 2^>nul') DO SET "MSBUILD_PATH=%%C"