Fichier de commandes pour modifier le chemin des utilisateurs

0

J'ai un fichier de commandes que j'ai reçu d'un autre message de ce forum qui modifie le chemin de l'utilisateur mais qui explose si le chemin contient des entrées Program Files (x86) communes aux machines Windows 7. Toute idée est comment résoudre le script afin qu'il fonctionne avec ces entrées?

@echo OFF

set KEY_NAME="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set VALUE_NAME=Path

FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
  set ValueName=%%A
  set ValueValue=%%C
)

if defined ValueName (

  set newPath=%ValueValue%;C:\bin

  reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newPath% /f

  set path=%path%;C:\bin

) else (
    @echo %KEY_NAME%\%VALUE_NAME% not found.
)
Robert
la source

Réponses:

0

Le script échoue car )in Program Files (x86)ferme de manière prématurée le bloc de code dans votre déclaration IF.

Voici un correctif rapide et compliqué qui devrait vous aider à résoudre ce problème, même si le code n’est pas encore très robuste.

@echo OFF
set KEY_NAME="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set VALUE_NAME=Path
FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
  set ValueName=%%A
  set ValueValue=%%C
)
if not defined ValueName (
  @echo %KEY_NAME%\%VALUE_NAME% not found.
  exit /b
)
set newPath=%ValueValue%;C:\bin
reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newPath% /f
set path=%path%;C:\bin
Dbenham
la source