OVH Cloud OVH Cloud

batch

3 réponses
Avatar
Laule
Bonjour


Je voudrais paramétrer mon délimiteur d'une commande FOR avec un guillemets
mais Windows n'arrive pas à interpréter ce guillemet. L'un d'entre vous
aurait-il une combine ?

Merci

Laurent

3 réponses

Avatar
Philippe T [MS]
Bonjour,

Pouvez-vous nous montrer un bout de votre code ce sera sans doute plus
simple à corriger ?

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Laule" wrote in message
news:
Bonjour


Je voudrais paramétrer mon délimiteur d'une commande FOR avec un
guillemets

mais Windows n'arrive pas à interpréter ce guillemet. L'un d'entre vous
aurait-il une combine ?

Merci

Laurent




Avatar
Laule
FOR /F "delims=" tokens=2" %%n in (toto.txt) do echo %%n

Mon problème est que je ne peux pas mettre " en délimiteur car cela est
interprétré comme la fin des paramètres .....


"Philippe T [MS]" a écrit dans le message de
news:
Bonjour,

Pouvez-vous nous montrer un bout de votre code ce sera sans doute plus
simple à corriger ?

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"Laule" wrote in message
news:
Bonjour


Je voudrais paramétrer mon délimiteur d'une commande FOR avec un
guillemets

mais Windows n'arrive pas à interpréter ce guillemet. L'un d'entre vous
aurait-il une combine ?

Merci

Laurent








Avatar
Jean-Claude BELLAMY
Dans le message news: ,
Laule s'est ainsi exprimé:

FOR /F "delims=" tokens=2" %%n in (toto.txt) do echo %%n

Mon problème est que je ne peux pas mettre " en délimiteur car cela
est interprétré comme la fin des paramètres .....


Arrggghhh !
Superbe piège à c... ! ;-)

Et pas moyen de le contourner dans "FOR"
Le caractère d'échappement "^" (qui permet d'utiliser ">" ou "<" dans un
batch) ne fonctionne pas ici.

MAIS on peut ruser !
Il faut procéder en DEUX temps :
1) Il suffit de remplacer le " par un autre caractère (dont est est sûr
l'inexistence dans le fichier au départ)
Dans mon exemple, j'ai pris le caractère dièse (#)

2) Puis effectuer la boucle avec ce caractère.

Exemple :

le fichier "toto.txt" contient ceci :
--------- couper ici ---------
test de "chaines" entre "guillemets" dans un fichier
--------- couper ici ---------


le batch (fichier "testfor.bat") contient ceci :
--------- couper ici ---------
@echo off
FOR /F "delims=" %%n in (toto.txt) do set line=%%n
set line=%line:"=#%
FOR /F "delims=# tokens=2" %%n in ("%line%") do echo %%n
--------- couper ici ---------

Et là çà fonctionne !

I:Program FilesVBS>testfor
chaines

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*