Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1564 connectés 

  FORUM HardWare.fr
  Windows & Software
  Win NT/2K/XP

  Problème de syntaxe dans un .bat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de syntaxe dans un .bat

n°2204778
antolionux
Posté le 28-10-2005 à 21:50:04  profilanswer
 

Bonjour,
 
J'ai un script BATCH à réaliser sous environnement 16 bits :
 
Principe :

 
- Le script doit à un moment donner ajouter un chemin à la variable PATH.
   
  ---------------------------------------------
  set path=%path%;%systemroot%\%new_rep%
  ---------------------------------------------
 
 Remarque :
 ;%systemroot%\%new_rep%   vaut   ;C:\WINDOWS\extratools
 
 

- Plus loin dans le script ce même chemin doit être supprimer (on sous entend qu'un autre programme ai pu ajouter d'autres chemin à la variable PATH), on ne peut donc pas restaurer le PATH d'origine. Il faut supprimer uniquement la bonne chaine de caractère.

 
   -> J'ai donc tester plusieur syntaxe pour le code ci-dessous mais rien n'y fais
 
   -----------------------------------------------
   set path=%path:;%systemroot%\%new_rep%=%
   -----------------------------------------------
 
 
 
note : dans l'aide de DOS, on remarque que %path:ch1=ch2% permet la substitution de chaine dans une variable. Et si ch2 est une chaine vide celà a pour effet de supprimer l'occurence de ch1 dans la variable --> C'est donc bien ce qu'il faut faire, et ça marche en ligne de commande avec des chemins simple.
   
note2 : Il y'a surrement des caractères dans cette chaine qui pose problème ou même le fait qu'il y'ai des variables à l'interieur de la chaine, ..., mais ayant essayé plusieurs combinaisons ; celà fait plus de deux jours que je n'arrive pas au résultat voulu. Je désespère  :pt1cable:  :cry:  
 
D'avance merci pour votre aide qui me sera très préçieuse :jap:

mood
Publicité
Posté le 28-10-2005 à 21:50:04  profilanswer
 

n°2207751
Michel2181
Posté le 31-10-2005 à 23:52:44  profilanswer
 

Bonjour,
 
Voici la procédure:  
1 = sauvegarde du path d'origine dans une nouvelle variable.
2 = execution de votre programme (qui modifie le path)
3 = restitution du path d'origine quand votre programme est terminé.  
4 = effacement de la variable de sauvegarde du path d'origine.
 
----------------------------------------------------------
SET ORGPATH=%PATH%       (1ere ligne du batch)
 
<ici votre programme>
 
SET PATH=%ORGPATH%       (avant dernière ligne du batch)
SET ORGPATH=                    (dernière ligne du batch)
 
----------------------------------------------------------
 
pour intervertir des variables utilisez,
en ligne de commande:  
%variable-1%  %variable-2%
 
dans un fichier de commandes:  
%%variable-1%%  %%variable-2%%
(il faut doubler le symbole "%" )
d'où le fonctionnement en ligne de commande et pas en batch.
 
Voilà.  cordialement


Message édité par Michel2181 le 01-11-2005 à 00:01:45
n°2208098
antolionux
Posté le 01-11-2005 à 12:42:46  profilanswer
 

Hum, oui mais là tu remet l'ancien path, tu ne supprime pas le chemin ajouté.
 
par exemple si un autre programme ajoute aussi un ou des cheminq, avec ta manip, ça va tout virer et remettre celui de base.
 
En fait ce que je veux c'est vraiment supprimer un chemin bien précis et non pas restituer la path d'origine avec une copie de sauvegarde.

n°2208964
Michel2181
Posté le 02-11-2005 à 00:08:51  profilanswer
 

Vi, je voyais pas ça comme ça...
 
Bon, il faut donc "jouer" avec les variables d'environnement.
 
Obligatoirement il faut sauvegarder le path original (sauf si tu n'en n'a plus besoin).  
Voila la liste des variables utilisées pour l'exemple:
 
NORMAL = path d'origine
CH1       = chemin 1 à ajouter (ou enlever)
CH2       = chemin 2 à     "           "
CH3       = chemin 3 "      "           "
 
1ere ligne:  
SET NORMAL=%PATH%
 
<ici exécution du programme qui ajoute le chemin 1> sous la forme:
SET CH1=C:\new_rép\chemin1
 
<prise en compte du nouveau chemin>
SET PATH=%NORMAL%;%CH1%;%CH2%;%CH3%;
 
Note que les variables %CH2% et %CH3% n'ont aucune valeur pour l'instant donc ne seront pas prises en compte.
 
Ajout du 2e chemin:
<ici exécution du programme qui ajoute le chemin 2> sous la forme:
SET CH2=C:\new_rép\chemin2
 
<prise en compte du nouveau chemin>
SET PATH=%NORMAL%;%CH1%;%CH2%;%CH3%;
 
Si tu veux supprimer %CH1% du path, il faut "vider" sa valeur:
SET CH1=
puis
SET PATH=%NORMAL%;%CH1%;%CH2%;%CH3%;
 
Note 1: sous DOS 16 bits, éviter des noms de variables de plus de 8 caractères, car ils risquent d'être tronqués.
 
Note 2: l'ordre des variables chemins dans la ligne PATH n'a aucune importance, toutefois il vaut mieux laissé %NORMAL% en premier car elle inclut sans doute les répertoire c:\dos.
 
Tiens moi au courant.

n°2211666
antolionux
Posté le 04-11-2005 à 14:17:54  profilanswer
 

Y'a de l'idée mais je crains que ça ne corresponde pas vraiment à ce que je veux faire.
 
Dans l'exemple que tu donnes, toutes les variables sont gérer par un même batch, on peut donc jouer avec sans problème, et mettre ce qu'on veut comme on veut dans la variable path (encore que les ";" ne sont pas gérés) et on risque d'avoir une variable path du genre:
PATH ==> C:\Windows\system32;C:\chemin1\balbla;;;C:\chemin_x\;
 
Parceque imagine que tu déinstalle un logiciel de ton system, tu dois donc enlever le chemin associé à ce logiciel de la variable path. Or ce chemin peut se trouver n'importe où dans la variable.
 
Donc ton system pourrait éventuellement marcher (à par les ; ) si tu peut a partir de la variable path extraire tous les chemin et les stocker dans des variable ch1, ch2, etc ... et ensuite reconstruite le tout sans le chemin que tu souhaites enlever
 
EXEMPLE :
 
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\Fichiers communs\Autodesk Shared\;C:\Program Files\backburner 2\
 
là il faudrait que le programme extrait chaque chemin dans une variable (chose que je ne sait pas faire)
 
CH1 = C:\WINDOWS\system32;
CH2 = C:\WINDOWS;
CH3 = C:\WINDOWS\System32\Wbem;
...
...
CHx = C:\Program Files\backburner 2\
 
Ensuite reconstruire le PATH sans le CH3 par exemple
 
set PATH=%CH1%%CH2%%CH4%....%CHx%


Message édité par antolionux le 04-11-2005 à 14:22:16
n°2211670
wackevat
Posté le 04-11-2005 à 14:21:15  profilanswer
 

Salut,
 
Juste une petite précision : les ; consécutifs ne gênent pas.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Win NT/2K/XP

  Problème de syntaxe dans un .bat

 

Sujets relatifs
Probleme HUNGAPP et fermeture AOL AutoconnectProblème hébergement chez OVH
Problème de connexion sur un DC après restaurationProblème activation connexion réseau XP SP2
Probleme Thunderbird...Petit probleme de reseau , pc innaccesible ...
Enorme problème ...Help !Problème de drivers avec ma clé USB
Probleme syntaxe DOS (espaces)Probleme de syntaxe dans mon fichier Batch
Plus de sujets relatifs à : Problème de syntaxe dans un .bat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR