3

Я могу запустить следующую команду reg query в Windows 7 и получить следующие результаты:

command-

Reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s /f "EMC Avamar for Windows"

выход-

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1693DDE2-4577-46E9-AEE2-0EAFE1F2A00E}
    DisplayName    REG_SZ    EMC Avamar for Windows

Теперь, когда я запускаю ту же команду в Windows XP, я получаю следующую ошибку:

ошибка-

Error: Too many command-line parameters

Теперь я обнаружил, что в Windows XP вам нужно настроить команду и выполнить ее следующим образом:

command-

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s | FIND "EMC Avamar for Windows"

Команда работает, но я получаю только следующие выходные данные без фактического regkey:

выход-

DisplayName REG_SZ  EMC Avamar for Windows

Как и команда Windows 7, есть ли способ выполнить запрос в XP, чтобы получить также имя ключа?

3 ответа3

2

Редактировать Используйте чистый пакетный ответ Эндоро вместо этого :)

Если вы хотите использовать только собственные команды Windows XP, используйте это:

партия

@echo off
setlocal EnableExtensions
for /f "delims=" %%A in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s') do (
    echo("%%~A"| find /i "EMC Avamar for Windows" && goto break
    echo("%%~A"| find /i "HKEY_" >nul && set "Last=%%A"
)
:break
echo %Last%
pause>nul
endlocal

Выход

    DisplayName    REG_SZ    EMC Avamar for Windows
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1693DDE2-4577-46E9-AEE2-0EAFE1F2A00E}

Обратите внимание, что строка вывода DisplayName выводится командой find а строка вывода HKEY - командой echo %Last% .

1

В XP вы можете использовать следующий скрипт оболочки (с GNU ):

@echo off &SETLOCAL
SET "regkey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
SET "search=EMC Avamar for Windows"
SET "sedkey=%regkey:\=\\%"
reg query "%regkey%" /s | sed -n "/%sedkey%/{x};/%search%/{x;p;x;p}"

Sed для Windows

1

чистая партия

@echo off
setlocal EnableExtensions
set "RegKey=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
set "Search=EMC Avamar for Windows"

for /f "tokens=1* delims=[]" %%A in ('reg query "%RegKey%" /s ^| find /i /n "%Search%"') do (
    set "ValuePos=%%A"
    set "Value=%%B"
)

if defined ValuePos for /f "tokens=1* delims=[]" %%A in ('reg query "%RegKey%" /s ^| find /i /n "%RegKey%"') do (
    if %ValuePos% gtr %%A SET "Key=%%B"
)

echo(%Key%
echo(%Value%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .