Чтение слов, разделенных пробелом и строковым значением, также содержит пробел в пакетном скрипте
Мне нужно прочитать значение реестра по умолчанию из пакетного скрипта. Название определенного элемента содержит несколько пробелов. Также я хочу выполнить цикл в пакетном файле один раз.
rem @echo OFF
setlocal ENABLEEXTENSIONS
set KEY_NAME="HKEY_CURRENT_USER\Software\abc\xyz pqr"
FOR /F "tokens=1-3 delims=<TAB>" %%A IN ('REG QUERY %KEY_NAME% 2^>nul') DO (
set ValueName=%%A
set ValueType=%%B
set ValueValue=%%C
)
if defined ValueName (
@echo Value Name = %ValueName%
@echo Value Type = %ValueType%
@echo Value Value = %ValueValue%
) else (
@echo %KEY_NAME%\%VALUE_NAME% not found.
)
pause
Это дает следующий вывод
rem @echo OFF
setlocal ENABLEEXTENSIONS
set KEY_NAME="HKEY_CURRENT_USER\Software\abc\xyz pqr"
FOR /F "tokens=1-3 delims=<TAB>" %A IN ('REG QUERY "HKEY_CURRENT_USER\Software\abc\xyz pqr" 2>nul') DO (
set ValueName=%A
set ValueType=%B
set ValueValue=%C
)
(
set ValueName=HKEY_CURREN
set ValueType=_USER\Software\abc\xyz pq
set ValueValue=
)
(
set ValueName= (Default) REG_SZ C:\Program Files (x86)\abc\
set ValueType=
set ValueValue=
)
(
set ValueName=
set ValueType=uthor REG_SZ gj
set ValueValue=
)
(
set ValueName= Version REG_SZ 1.4.0.0
set ValueType=
set ValueValue=
)
if defined ValueName (
) else ()
Value Name = Version REG_SZ 1.4.0.0
Value Type =
Value Value =
pause
Press any key to continue . . .
Я хотел бы получить следующий вывод, а также хочу, чтобы цикл for прекратился, как только я получу значение (по умолчанию)
(
set ValueName=(Default)
set ValueType=REG_SZ
set ValueValue=C:\Program Files (x86)\abc\
)
Заранее спасибо за помощь!