Batch - comment gérér l'espace ?

Batch - comment gérér l'espace ? - Win NT/2K/XP - Windows & Software

Marsh Posté le 03-09-2012 à 09:57:47    

Bonjour, je suis sur la création d'un fichier batch qui fait le ménage dans un répertoire en effaçant tout ce qu'il y a dedans, sauf 4 répertoires (All Users, Default User, LocalService, NetworkService).
 
Problème qui me prend la tête depuis un moment : pas moyen de vérifier la condition vraie quand il y a un espace dans la variable.
 
Même si i vaut Default User, pas moyen de vérifier la condition if %%i == Default User à cause de l'espace dans le nom. J'ai beau essayer avec if %%i == "Default User" , if %%i == 'Default User' , if %%i == Default User (espace insécable). J'ai aussi essayé avec delims= et tokens= mais j'avoue que je ne pige pas la subtilité de ces commandes.  
 
Quelqu'un qui connait la solution peut-il regarder mon script ?
 


DIR /AD /B "E:\USERS" > %TEMP%\listeRepertoiresTEMP.txt
FOR /F "delims=" %%i in (%TEMP%\listeRepertoiresTEMP.txt) DO (
 set efface=oui
 if %%i == All Users set efface=non
 if %%i == Default User set efface=non
 if %%i == LocalService User set efface=non
 if %%i == NetworkService User set efface=non
 if !efface! == oui (
  echo Suppression de %%i...
 )
)


 
Merci d'avance !!
 
 [:arn0]

Reply

Marsh Posté le 03-09-2012 à 09:57:47   

Reply

Marsh Posté le 03-09-2012 à 10:58:26    

tu peux mettre des "  " pour délimiter les nom long.
 
ou  
 
tu fais un dir /X pour connaître et utiliser les noms court et les utiliser a la place.


---------------
#mais-chut
Reply

Marsh Posté le 03-09-2012 à 11:22:37    

Passe par des GPP plutôt...

Reply

Marsh Posté le 03-09-2012 à 11:29:54    

Hello et merci d'être passé par là.
 

Citation :

tu peux mettre des "  " pour délimiter les nom long.
 
ou  
 
tu fais un dir /X pour connaître et utiliser les noms court et les utiliser a la place.


 
Ni l'un ni l'autre ne marche hélas ! J'ai quand même essayé pas mal de truc avant de poster  ;)  
 
les "double quote" ne fonctionnent pas ni 'simple quote'.
 
le paramétré /X est "écrasé" par le paramètre /B qui est nécessaire à la boule for.
 
Et les GPP... ben... je suis sur un domaine Samba  :D  
 
J'invoque le dieu du batch pour venir m'aider !
 
[:arn0]

Reply

Marsh Posté le 03-09-2012 à 11:32:21    

c'est pas if "%%i" == "default machin" ?


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
Reply

Marsh Posté le 03-09-2012 à 11:41:49    

gougoul07 a écrit :

c'est pas if "%%i" == "default machin" ?


 
 
YEAH ÇA MARCHE !!!!
 
Tu es le dieu du batch que j'attendais :jap:  
 
(Saleté de langage !)

Reply

Marsh Posté le 03-09-2012 à 11:44:59    

non c'est logique il te faut la même chose des deux cotés
tu devais faire une comparaison avec l'une des moitiés seulement du nom a cause de l'espace


---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
Reply

Marsh Posté le 03-09-2012 à 11:51:00    

Oui grâce à ton aide je comprends un peu mieux la logique, c'est vrai que c'est assez simple finalement, m'enfin, dans tous les autres langages que je connait, une variable chaine est une variable chaine, pas besoin d'entourer de guillemets le nom de variable.
 
Faut le savoir quoi !

Reply

Marsh Posté le 03-09-2012 à 11:53:19    

sauf que la ça n'est pas vraiment une variable, c'est remplacé par le contenu lors de l’exécution, le %%i n'existe plus
c'est valable pour bien d'autres choses


Message édité par gougoul07 le 03-09-2012 à 11:53:37

---------------
Mieux vaut apprendre à un homme à pêcher avant de l'avoir tué.
Reply

Sujets relatifs:

Leave a Replay

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