Suppression d'entrées dans le PATH en batch !!

Suppression d'entrées dans le PATH en batch !! - Shell/Batch - Programmation

Marsh Posté le 18-06-2010 à 09:43:03    

Bonjour,
 
j'aimerai savoir comment faire pour supprimer des entrées repérer par une chaine de caractère dans la variable d'environnement PATH depuis un batch.
En gros, j'ai une chaine TOTO et mon PATH est dans ce style:
E:\blabla;E:\blibli;E:\bloblo\TOTO\blabli;E:\blublu; etc..etc..
 
et je voudrais virer toutes les entrées qui contiennent TOTO pour que mon PATH soit ainsi:
E:\blabla;E:\blibli;;E:\blublu; etc..etc..
 
Sachant qu'il peut y avoir plusieurs entrée qui possèdent la chaine TOTO et que le séparateur d'entrée est toujours ";"
Je sais pas si j'ai été très clair. lol !!
Je pense qu'il faille faire ça en plusieurs étape, style:

  • découper le PATH par rapport au séprateur ";" en mettant le résultat dans un fichier.
  • lire le fichier et supprimer les entrées où il y a TOTO.
  • écraser le PATH par les valeurs restantes.


Est-ce une bonne méthode et si oui quels sont les commandes pour faire ça ..sinon je suis ouvert à toutes propositions pouvant m'aider.
Merci de votre aide ou de toutes réponses pouvant me faire avancer.

Reply

Marsh Posté le 18-06-2010 à 09:43:03   

Reply

Marsh Posté le 18-06-2010 à 15:40:38    

Je n'ai pas trouvé de commande miracle permettant de découper le PATH par rapport au séparateur ';'
Si elle existe je suis intéressé.
 
Voici une solution qui fait un peu usine à gaz (j'ai utilisé la variable MY_PATH au lieu de PATH pour mes tets) :

Code :
  1. SET MY_PATH=C:\Logiciel\Appli1;U:\temp;U:\bin;C:\LOGICIEL\COMMUN
  2. ECHO old_path=%MY_PATH%
  3. CALL :REMOVE_FROM_PATH "logiciel"
  4. ECHO new_path=%new_path%
  5. GOTO :EOF
  6. GOTO :_AFTER_REMOVE_FROM_PATH
  7. :REMOVE_FROM_PATH
  8.    SET old_path=%MY_PATH%
  9.    SET new_path=
  10.  
  11.    :: -------------------------------------------
  12.    :: Boucle de traitement du path actuel
  13.    ::--------------------------------------------
  14.  
  15. :_RFP00
  16.    ::---------------------------------
  17.    :: Recuperation repertoire
  18.    ::---------------------------------
  19.  
  20.    IF "%old_path%" == "" GOTO :_RFP90
  21.    SET last_dirs=%old_path:*;=%
  22.    IF "%last_dirs%" == "%old_path%" GOTO :_RFP10
  23.    CALL SET dir=%%old_path:%last_dirs%=%%
  24.    SET dir=%dir:~0,-1%
  25.    GOTO :_RFP20
  26. :_RFP10
  27.    SET dir=%last_dirs%
  28.    SET last_dirs=
  29. :_RFP20
  30.    SET old_path=%last_dirs%
  31.  
  32.    ::---------------------------------
  33.    :: Filtrage repertoire pour
  34.    :: constitution nouveau path
  35.    ::---------------------------------
  36.  
  37.    IF "%dir%" == "" GOTO :_RFP30
  38.    SET fdir=
  39.    FOR /F "tokens=*" %%d IN (' CMD /S /C "ECHO %dir%| FIND /I /V %*" ') DO SET fdir=%%d
  40.    IF NOT "%fdir%" == "" SET new_path=%new_path%;%fdir%
  41. :_RFP30:
  42.    ::---------------------------------
  43.    :: Fin boucle traitement path
  44.    ::---------------------------------
  45.    GOTO :_RFP00
  46. :_RFP90
  47.    IF NOT "%new_path%" == "" SET new_path=%new_path:~1%
  48.    SET MY_PATH=%new_path%
  49.    GOTO :EOF     
  50. :_AFTER_REMOVE_FROM_PATH

Le résultat :

old_path=C:\Logiciel\Appli1;U:\temp;U:\bin;C:\LOGICIEL\COMMUN
new_path=U:\temp;U:\bin


 
Jean-Pierre.

Reply

Marsh Posté le 21-06-2010 à 16:02:05    

Whaouuu ...
super ça marche nickel ...c'est clair que c'est un peu lourd comme programme..mais ça fait ce que je demande donc merci beaucoup !!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed