reg query; Windows 7 vs Windows XP

3

Eu posso executar o seguinte comando reg query no Windows 7 e obter os seguintes resultados:

comando -

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

saída -

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

Agora, quando executo o mesmo comando no Windows XP , recebo o seguinte erro:

erro -

Error: Too many command-line parameters

Agora descobri que, com o Windows XP, você precisa ajustar o comando e executá-lo da seguinte maneira:

comando -

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

O comando funciona, mas eu só recebo a seguinte saída menos a regkey atual:

saída -

DisplayName REG_SZ  EMC Avamar for Windows

Como o comando do Windows 7, existe uma maneira de executar a consulta no XP para obter o nome da chave também?

    
por dlemley 18.06.2013 / 15:46

3 respostas

2

Editar Use a resposta em lote pura do Endoro ao invés desta:)

Se você quiser usar apenas comandos nativos do Windows XP, use isto:

Lote

@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

Saída

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

Observe que a linha de saída DisplayName é impressa pelo comando find e a linha de saída HKEY é impressa pelo comando echo %Last% .

    
por 18.06.2013 / 17:14
1

No XP, você pode usar o script de shell a seguir (com o GNU sed ):

@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 para Windows

    
por 18.06.2013 / 17:01
1

lote puro

@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%
    
por 18.06.2013 / 20:15