2017-09-30 2 views
0
FOR /F "tokens=2*" %%A IN (
    'REG QUERY "HKLM\Software\EA GAMES\Need for Speed Most Wanted" /v InstallDir' 
) DO (set HBMU=%%B) 
GOTO END 

comment je peux ajouter Si% ERRORLEVEL% == 1 goto CLOSE à mon code? parce que quand je mets sous) DO (set HBMU = %% B) ça ne marche pas..Bat/CMD - Masquage "ERREUR" avec reg.exe> ​​nul 2> & 1

enter image description here

+2

Du haut de ma tête, '.../v^InstallDir> NUL 2 ^>^& 1'' – Magoo

Répondre

1

Essayez ceci, après avoir terminé le reste de la clé de Registre sur la ligne 2:

For /F "Skip=1 Tokens=2*" %%A In (
    'Reg Query "HKLM\SOFTWARE\..." /V "InstallDir" 2^>Nul' 
) Do Set "HBMU=%%B" 

Vous ne pouvez pas rediriger les deux à Nul sinon rien ne sera émis par la boucle comme variable %%B

Modifier

Voici un script complet qui devrait faire ce que votre code commenté était supposé faire. (Tant que votre logiciel place définitivement ses informations dans le registre en fonction de l'architecture du système d'exploitation).

@Echo Off 
Set "EAG=EA GAMES\Need for Speed Most Wanted" 
Set "RKM=\" 
Reg Query "HKLM\Hardware\Description\System\CentralProcessor\0"^ 
    /V "Identifier" 2>Nul|Find /I "x86">Nul||Set "RKM=\Wow6432Node\" 
For /F "EOL=HTokens=2*" %%A In ('Reg Query "HKLM\Software%RKM%%EAG%" /V^ 
"InstallDir" 2^>Nul') Do Start "" "%%~B\unins000.exe" 
Pause 
+0

"Skip = 1" est important? Pourquoi est-ce? –

+1

Ce n'est pas nécessaire, ce type de recherche de registre ne se soucie pas si vous l'ignorez. Tout ce qui va arriver, c'est qu'il va essayer de définir les troisièmes jetons de la première ligne de sortie, _ (la clé de registre) _, juste avant d'être écrasé par la valeur dont vous avez besoin de toute façon. – Compo

+0

OK. De toute façon comment je peux ajouter 'If% ERRORLEVEL% == 1 goto CLOSE' à mon code? parce que quand je mets sous ') DO (set HBMU = %% B)' ça ne marche pas. –