Чтение значения реестра в пакетную переменную, обработка пробелов в значении

Я изо всех сил пытаюсь прочитать значение ключа реестра в переменную. Значение реестра может содержать или не содержать пробелы. В этом случае я пытаюсь найти пути SDK.

Это легко получить значение сreg query, но он возвращается в удивительно бесполезном формате:

C:\Users\Administrator\Desktop>reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools" /v InstallationFolder

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools
    InstallationFolder    REG_SZ    C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\

Имя ключа, тип ключа и значение ключа разделяются последовательными пробелами, а не символами табуляции.

Вы могли бы подумать, что вы можете использовать что-то вроде:

FOR /F "usebackq tokens=3* skip=2" %%L IN (
    `reg query "HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1\WinSDKTools" /v InstallationFolder`
) DO SET sdkpath=%%L

... но если ключ содержит пробелы, как в этом случае, результат, выданный в командной строке:

C:\Users\Administrator\Desktop>SET sdkpath=C:\Program

Что не полезно. Кажется, нет универсальной переменной, чтобы сказать "Все совпадения". И вы не можете просто написать:

DO SET sdkpath=%%L %%M

... потому что если естьне пробелы в пути, которые будут производить буквальное%M (и также создаст завершающий пробел).

Так. Есть ли способ сделать эту простую вещь в командном файле?

Я написал большую часть инструментов в Powershell (и некоторых Perl), но мне нужно использовать командный файл для «простой» задачи:callсоздание сценария среды Visual Studio / Windows SDK, а затем вызов кода на разумных языках после настройки среды.

Можно подумать, что через 10 с лишним летcmd.exeсуществование иcommand.com до этого это было бы легко. Помогите?

(Я могу использовать Perl иWin32:: пакеты для запроса реестра, но это не помогает мне получить его в пакетной переменной ...)

Использование Win2k12.

Я прочел:

Считать значение реестра, содержащее пробелы, используя командный файлShell скрипт для чтения реестра Windows

и многие другие, но никто не справляетсяобщий случай правильного чтения значения из ключа, не зная, содержит ли оно пробелы / сколько.

Ответы на вопрос(1)

Ваш ответ на вопрос