bonjour
comment utiliser correctement FOR quelle syntaxe pour vérifier tous les
répertoire à l'intérieur d'un répertoire parent mais rien que les
répertoires et pas celui parent
merci
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off dir *.* /A:D /B>TEMP.TXT for /F %%i in (TEMP.TXT) do (call :TRT %%i) del TEMP.TXT goto :EOF
:TRT echo %1 goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR : /A:D ne liste que les répertoires /B mode "sobre", ne donne que le nom, sans fioritures /S si l'on voulait aussi les sous-répertoires.
@-salutations
Michel Claveau
Bonjour !
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off
dir *.* /A:D /B>TEMP.TXT
for /F %%i in (TEMP.TXT) do (call :TRT %%i)
del TEMP.TXT
goto :EOF
:TRT
echo %1
goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR :
/A:D ne liste que les répertoires
/B mode "sobre", ne donne que le nom, sans fioritures
/S si l'on voulait aussi les sous-répertoires.
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off dir *.* /A:D /B>TEMP.TXT for /F %%i in (TEMP.TXT) do (call :TRT %%i) del TEMP.TXT goto :EOF
:TRT echo %1 goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR : /A:D ne liste que les répertoires /B mode "sobre", ne donne que le nom, sans fioritures /S si l'on voulait aussi les sous-répertoires.
@-salutations
Michel Claveau
Jacques Barathon [MS]
Attention à la présence d'espaces dans les noms de répertoires. Par défaut, le FOR ne va prendre que le premier mot. Par exemple le répertoire "Mes Documents" ne retournera que "Mes". Il faut préciser qu'on veut tous les mots en ajoutant "tokens=*".
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la commande DIR en paramètre au lieu du fichier.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter le CALL et mettre directement la commande en fin de ligne "for ... do".
Le résultat final peut donc ressembler à ceci:
@echo off for /f "tokens=*" %%i in ('dir *.* /a:d /b') do echo %%i
Jacques
"Do Re Mi chel La Si Do" wrote in message news:
Bonjour !
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off dir *.* /A:D /B>TEMP.TXT for /F %%i in (TEMP.TXT) do (call :TRT %%i) del TEMP.TXT goto :EOF
:TRT echo %1 goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR : /A:D ne liste que les répertoires /B mode "sobre", ne donne que le nom, sans fioritures /S si l'on voulait aussi les sous-répertoires.
@-salutations
Michel Claveau
Attention à la présence d'espaces dans les noms de répertoires. Par défaut,
le FOR ne va prendre que le premier mot. Par exemple le répertoire "Mes
Documents" ne retournera que "Mes". Il faut préciser qu'on veut tous les
mots en ajoutant "tokens=*".
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la
commande DIR en paramètre au lieu du fichier.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter le
CALL et mettre directement la commande en fin de ligne "for ... do".
Le résultat final peut donc ressembler à ceci:
@echo off
for /f "tokens=*" %%i in ('dir *.* /a:d /b') do echo %%i
Jacques
"Do Re Mi chel La Si Do" <enleverlesO.OmcO@OmclaveauO.com> wrote in message
news:uDJGllW0FHA.3904@TK2MSFTNGP15.phx.gbl...
Bonjour !
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off
dir *.* /A:D /B>TEMP.TXT
for /F %%i in (TEMP.TXT) do (call :TRT %%i)
del TEMP.TXT
goto :EOF
:TRT
echo %1
goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR :
/A:D ne liste que les répertoires
/B mode "sobre", ne donne que le nom, sans fioritures
/S si l'on voulait aussi les sous-répertoires.
Attention à la présence d'espaces dans les noms de répertoires. Par défaut, le FOR ne va prendre que le premier mot. Par exemple le répertoire "Mes Documents" ne retournera que "Mes". Il faut préciser qu'on veut tous les mots en ajoutant "tokens=*".
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la commande DIR en paramètre au lieu du fichier.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter le CALL et mettre directement la commande en fin de ligne "for ... do".
Le résultat final peut donc ressembler à ceci:
@echo off for /f "tokens=*" %%i in ('dir *.* /a:d /b') do echo %%i
Jacques
"Do Re Mi chel La Si Do" wrote in message news:
Bonjour !
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off dir *.* /A:D /B>TEMP.TXT for /F %%i in (TEMP.TXT) do (call :TRT %%i) del TEMP.TXT goto :EOF
:TRT echo %1 goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR : /A:D ne liste que les répertoires /B mode "sobre", ne donne que le nom, sans fioritures /S si l'on voulait aussi les sous-répertoires.
@-salutations
Michel Claveau
Do Re Mi chel La Si Do
Bonsoir !
Attention à la présence d'espaces dans les noms de répertoires. Par défaut, le FOR ne va prendre que le premier mot. Par exemple le répertoire "Mes Documents" ne retournera que "Mes". Il faut préciser qu'on veut tous les mots en ajoutant "tokens=*".
Exact.
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans les cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser : for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo %%i) Mais, bon, question d'habitude.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
Autre problème du CALL interne : s'il y a un espace dans le nom du répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne récupèrera que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes, les répertoires invisibles, les noms en unicode, etc.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
@-salutations -- Michel Claveau
Bonsoir !
Attention à la présence d'espaces dans les noms de répertoires. Par
défaut, le FOR ne va prendre que le premier mot. Par exemple le
répertoire "Mes Documents" ne retournera que "Mes". Il faut préciser
qu'on veut tous les mots en ajoutant "tokens=*".
Exact.
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la
commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans les
cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser :
for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo %%i)
Mais, bon, question d'habitude.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter
le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
Autre problème du CALL interne : s'il y a un espace dans le nom du
répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne récupèrera
que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes, les
répertoires invisibles, les noms en unicode, etc.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
Attention à la présence d'espaces dans les noms de répertoires. Par défaut, le FOR ne va prendre que le premier mot. Par exemple le répertoire "Mes Documents" ne retournera que "Mes". Il faut préciser qu'on veut tous les mots en ajoutant "tokens=*".
Exact.
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans les cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser : for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo %%i) Mais, bon, question d'habitude.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
Autre problème du CALL interne : s'il y a un espace dans le nom du répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne récupèrera que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes, les répertoires invisibles, les noms en unicode, etc.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
@-salutations -- Michel Claveau
Jacques Barathon [MS]
"Do Re Mi chel La Si Do" wrote in message news:%23i2f%
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans les cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser : for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo %%i) Mais, bon, question d'habitude.
En effet, question d'habitude. Mais comme tu dis, si on veut passer une série de commandes qui incluent un filtre, il vaut mieux traiter ça via un fichier temporaire avant la commande FOR.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
En effet, c'est pour ça que j'ai précisé "si ta section n'inclut qu'une seule commande. Dans ce cas, il est bcp plus simple de traiter la commande directement sur la même ligne.
Autre problème du CALL interne : s'il y a un espace dans le nom du répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne récupèrera que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes, les répertoires invisibles, les noms en unicode, etc.
Tout à fait Michel.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
Bien compris. Mes précisions se voulaient tout aussi simples. En espérant que tout cela n'aura pas embrouillé l'esprit de Marc. :-)
Jacques
"Do Re Mi chel La Si Do" <enleverlesO.OmcO@OmclaveauO.com> wrote in message
news:%23i2f%23Qp0FHA.2932@TK2MSFTNGP10.phx.gbl...
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la
commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans
les cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser :
for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo
%%i)
Mais, bon, question d'habitude.
En effet, question d'habitude. Mais comme tu dis, si on veut passer une
série de commandes qui incluent un filtre, il vaut mieux traiter ça via un
fichier temporaire avant la commande FOR.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter
le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
En effet, c'est pour ça que j'ai précisé "si ta section n'inclut qu'une
seule commande. Dans ce cas, il est bcp plus simple de traiter la commande
directement sur la même ligne.
Autre problème du CALL interne : s'il y a un espace dans le nom du
répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne
récupèrera que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes,
les répertoires invisibles, les noms en unicode, etc.
Tout à fait Michel.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
Bien compris. Mes précisions se voulaient tout aussi simples. En espérant
que tout cela n'aura pas embrouillé l'esprit de Marc. :-)
"Do Re Mi chel La Si Do" wrote in message news:%23i2f%
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans les cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser : for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo %%i) Mais, bon, question d'habitude.
En effet, question d'habitude. Mais comme tu dis, si on veut passer une série de commandes qui incluent un filtre, il vaut mieux traiter ça via un fichier temporaire avant la commande FOR.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
En effet, c'est pour ça que j'ai précisé "si ta section n'inclut qu'une seule commande. Dans ce cas, il est bcp plus simple de traiter la commande directement sur la même ligne.
Autre problème du CALL interne : s'il y a un espace dans le nom du répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne récupèrera que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes, les répertoires invisibles, les noms en unicode, etc.
Tout à fait Michel.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
Bien compris. Mes précisions se voulaient tout aussi simples. En espérant que tout cela n'aura pas embrouillé l'esprit de Marc. :-)
Jacques
marc.dufresne
bonjour je vous remercie pour votre aide j'ai du mal à comprendre les explications de microsoft sur les deux messages que vous envoyez vous utilisé une foid des guillemet d'un sens et dans l'autre des guillemets dans l'autre comme ceux ci (`dir *.* /A:D /B`) d'ailleur que je ne sais pas faire au clavier merci
"Do Re Mi chel La Si Do" a écrit dans le message de news: #i2f#
Bonsoir !
Attention à la présence d'espaces dans les noms de répertoires. Par défaut, le FOR ne va prendre que le premier mot. Par exemple le répertoire "Mes Documents" ne retournera que "Mes". Il faut préciser qu'on veut tous les mots en ajoutant "tokens=*".
Exact.
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans les
cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser : for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo %%i)
Mais, bon, question d'habitude.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter
le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
Autre problème du CALL interne : s'il y a un espace dans le nom du répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne récupèrera
que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes, les
répertoires invisibles, les noms en unicode, etc.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
@-salutations -- Michel Claveau
bonjour
je vous remercie pour votre aide
j'ai du mal à comprendre les explications de microsoft
sur les deux messages que vous envoyez vous utilisé une foid des guillemet
d'un sens et dans l'autre des guillemets dans l'autre comme ceux ci (`dir
*.* /A:D /B`) d'ailleur que je ne sais pas faire au clavier
merci
"Do Re Mi chel La Si Do" <enleverlesO.OmcO@OmclaveauO.com> a écrit dans le
message de news: #i2f#Qp0FHA.2932@TK2MSFTNGP10.phx.gbl...
Bonsoir !
Attention à la présence d'espaces dans les noms de répertoires. Par
défaut, le FOR ne va prendre que le premier mot. Par exemple le
répertoire "Mes Documents" ne retournera que "Mes". Il faut préciser
qu'on veut tous les mots en ajoutant "tokens=*".
Exact.
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la
commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans
les
cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser :
for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo
%%i)
Mais, bon, question d'habitude.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux
éviter
le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
Autre problème du CALL interne : s'il y a un espace dans le nom du
répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne
récupèrera
que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes,
les
répertoires invisibles, les noms en unicode, etc.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
bonjour je vous remercie pour votre aide j'ai du mal à comprendre les explications de microsoft sur les deux messages que vous envoyez vous utilisé une foid des guillemet d'un sens et dans l'autre des guillemets dans l'autre comme ceux ci (`dir *.* /A:D /B`) d'ailleur que je ne sais pas faire au clavier merci
"Do Re Mi chel La Si Do" a écrit dans le message de news: #i2f#
Bonsoir !
Attention à la présence d'espaces dans les noms de répertoires. Par défaut, le FOR ne va prendre que le premier mot. Par exemple le répertoire "Mes Documents" ne retournera que "Mes". Il faut préciser qu'on veut tous les mots en ajoutant "tokens=*".
Exact.
De plus, tu peux t'épargner l'usage du fichier temporaire en passant la commande DIR en paramètre au lieu du fichier.
Oui, mais, comme souvent, je filtre, ça ne passe plus dans le FOR. Dans les
cas simples, je suis d'accord. Mais perso, je préfèrerais utiliser : for /F "usebackq tokens=*" %%i in (`dir *.* /A:D /B`) do (echo %%i)
Mais, bon, question d'habitude.
Enfin, si ta section :TRT n'inclut qu'une seule commande, tu peux éviter
le CALL et mettre directement la commande en fin de ligne "for ... do".
C'est vrai, mais seulement pour les commandes simples.
Autre problème du CALL interne : s'il y a un espace dans le nom du répertoire, il faudra utiliser %* dans :TRT, faute de quoi on ne récupèrera
que le premier mot.
Sinon, on peut aussi avoir des problèmes avec les répertoires systèmes, les
répertoires invisibles, les noms en unicode, etc.
Globalement, on est d'accord. Mon exemple se voulait simple à comprendre.
@-salutations -- Michel Claveau
marc.dufresne
bonjour apparement ce petit prog ne fonctionne pas avec des noms longs même en utilisant "tokens" je crois quand on appel TRT on ne transmet pas toutes les parties du nom long merci "Do Re Mi chel La Si Do" a écrit dans le message de news:
Bonjour !
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off dir *.* /A:D /B>TEMP.TXT for /F %%i in (TEMP.TXT) do (call :TRT %%i) del TEMP.TXT goto :EOF
:TRT echo %1 goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR : /A:D ne liste que les répertoires /B mode "sobre", ne donne que le nom, sans fioritures /S si l'on voulait aussi les sous-répertoires.
@-salutations
Michel Claveau
bonjour
apparement ce petit prog ne fonctionne pas avec des noms longs même en
utilisant "tokens" je crois quand on appel TRT on ne transmet pas toutes les
parties du nom long
merci
"Do Re Mi chel La Si Do" <enleverlesO.OmcO@OmclaveauO.com> a écrit dans le
message de news: uDJGllW0FHA.3904@TK2MSFTNGP15.phx.gbl...
Bonjour !
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off
dir *.* /A:D /B>TEMP.TXT
for /F %%i in (TEMP.TXT) do (call :TRT %%i)
del TEMP.TXT
goto :EOF
:TRT
echo %1
goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR :
/A:D ne liste que les répertoires
/B mode "sobre", ne donne que le nom, sans fioritures
/S si l'on voulait aussi les sous-répertoires.
bonjour apparement ce petit prog ne fonctionne pas avec des noms longs même en utilisant "tokens" je crois quand on appel TRT on ne transmet pas toutes les parties du nom long merci "Do Re Mi chel La Si Do" a écrit dans le message de news:
Bonjour !
Le plus simple, c'est de passer par un DIR et un fichier temporaire.
Exemple :
@echo off dir *.* /A:D /B>TEMP.TXT for /F %%i in (TEMP.TXT) do (call :TRT %%i) del TEMP.TXT goto :EOF
:TRT echo %1 goto :EOF
Dans le sous-programme :TRT on effectue les traitements
Explications, sur le DIR : /A:D ne liste que les répertoires /B mode "sobre", ne donne que le nom, sans fioritures /S si l'on voulait aussi les sous-répertoires.
@-salutations
Michel Claveau
Jacques Barathon [MS]
"marc.dufresne" wrote in message news:%
bonjour je vous remercie pour votre aide j'ai du mal à comprendre les explications de microsoft sur les deux messages que vous envoyez vous utilisé une foid des guillemet d'un sens et dans l'autre des guillemets dans l'autre comme ceux ci (`dir *.* /A:D /B`) d'ailleur que je ne sais pas faire au clavier merci
Michel Claveau disait qu'il utilise plutôt le guillement inversé ` qu'on obtient par Alt-Gr 7. Pour ma part (je suppose que c'est moi Microsoft?) je ne l'ai pas utilisé dans mes exemples. Tu peux avoir plus d'infos sur son usage en tapant FOR /? dans ton invite de commandes.
Jacques
"marc.dufresne" <pasde.mail.direct.marcdufresne@free.fr> wrote in message
news:%23ohKnK20FHA.1564@tk2msftngp13.phx.gbl...
bonjour
je vous remercie pour votre aide
j'ai du mal à comprendre les explications de microsoft
sur les deux messages que vous envoyez vous utilisé une foid des guillemet
d'un sens et dans l'autre des guillemets dans l'autre comme ceux ci (`dir
*.* /A:D /B`) d'ailleur que je ne sais pas faire au clavier
merci
Michel Claveau disait qu'il utilise plutôt le guillement inversé ` qu'on
obtient par Alt-Gr 7. Pour ma part (je suppose que c'est moi Microsoft?) je
ne l'ai pas utilisé dans mes exemples. Tu peux avoir plus d'infos sur son
usage en tapant FOR /? dans ton invite de commandes.
bonjour je vous remercie pour votre aide j'ai du mal à comprendre les explications de microsoft sur les deux messages que vous envoyez vous utilisé une foid des guillemet d'un sens et dans l'autre des guillemets dans l'autre comme ceux ci (`dir *.* /A:D /B`) d'ailleur que je ne sais pas faire au clavier merci
Michel Claveau disait qu'il utilise plutôt le guillement inversé ` qu'on obtient par Alt-Gr 7. Pour ma part (je suppose que c'est moi Microsoft?) je ne l'ai pas utilisé dans mes exemples. Tu peux avoir plus d'infos sur son usage en tapant FOR /? dans ton invite de commandes.
Jacques
Jacques Barathon [MS]
"marc.dufresne" wrote in message news:
bonjour apparement ce petit prog ne fonctionne pas avec des noms longs même en utilisant "tokens" je crois quand on appel TRT on ne transmet pas toutes les parties du nom long merci
Si, toutes les parties sont transmises, mais le CALL considère l'espace entre ces parties comme un séparateur, et les passe donc comme autant de paramètres distincts. La preuve, le script suivant:
--- début --- for /f "tokens=* delims=" %%d in ('dir /b doc*') do call :TRT %%d goto :EOF
:TRT echo 1: %1, 2: %2, 3: %3 --- fin ---
Résultat: 1: Documents, 2: and, 3: Settings
Tu as plusieurs solutions:
1. Tu peux t'amuser à reconstruire le puzzle comme je l'ai fait dans l'exemple ci-dessus en concaténant %1, %2, etc. Gros inconvénient, il faut savoir combien de morceaux on veut recoller.
2. Tu peux passer le paramètre entre guillemets (call :TRT "%%d"), tu récupèreras bien la chaîne en entier à l'autre bout. Inconvénient, tu te traîneras les guillemets dans tous les traitements suivants.
3. Tu peux ne pas passer le nom du répertoire en paramètre mais l'assigner à une variable d'environnement que tu pourras exploiter comme bon te semble plus loin dans ton script. Par exemple:
--- début --- for /f "tokens=* delims=" %%d in ('dir /b doc*') do set Dir=%%d & call :TRT goto :EOF
:TRT echo %Dir% --- fin ---
Résultat: Documents and Settings
J'espère que les explications de Microsoft ont été claires ;-). Bon courage.
Jacques
"marc.dufresne" <pasde.mail.direct.marcdufresne@free.fr> wrote in message
news:uydynK20FHA.1564@tk2msftngp13.phx.gbl...
bonjour
apparement ce petit prog ne fonctionne pas avec des noms longs même en
utilisant "tokens" je crois quand on appel TRT on ne transmet pas toutes
les
parties du nom long
merci
Si, toutes les parties sont transmises, mais le CALL considère l'espace
entre ces parties comme un séparateur, et les passe donc comme autant de
paramètres distincts. La preuve, le script suivant:
--- début ---
for /f "tokens=* delims=" %%d in ('dir /b doc*') do call :TRT %%d
goto :EOF
:TRT
echo 1: %1, 2: %2, 3: %3
--- fin ---
Résultat:
1: Documents, 2: and, 3: Settings
Tu as plusieurs solutions:
1. Tu peux t'amuser à reconstruire le puzzle comme je l'ai fait dans
l'exemple ci-dessus en concaténant %1, %2, etc. Gros inconvénient, il faut
savoir combien de morceaux on veut recoller.
2. Tu peux passer le paramètre entre guillemets (call :TRT "%%d"), tu
récupèreras bien la chaîne en entier à l'autre bout. Inconvénient, tu te
traîneras les guillemets dans tous les traitements suivants.
3. Tu peux ne pas passer le nom du répertoire en paramètre mais l'assigner à
une variable d'environnement que tu pourras exploiter comme bon te semble
plus loin dans ton script. Par exemple:
--- début ---
for /f "tokens=* delims=" %%d in ('dir /b doc*') do set Dir=%%d & call :TRT
goto :EOF
:TRT
echo %Dir%
--- fin ---
Résultat:
Documents and Settings
J'espère que les explications de Microsoft ont été claires ;-). Bon courage.
bonjour apparement ce petit prog ne fonctionne pas avec des noms longs même en utilisant "tokens" je crois quand on appel TRT on ne transmet pas toutes les parties du nom long merci
Si, toutes les parties sont transmises, mais le CALL considère l'espace entre ces parties comme un séparateur, et les passe donc comme autant de paramètres distincts. La preuve, le script suivant:
--- début --- for /f "tokens=* delims=" %%d in ('dir /b doc*') do call :TRT %%d goto :EOF
:TRT echo 1: %1, 2: %2, 3: %3 --- fin ---
Résultat: 1: Documents, 2: and, 3: Settings
Tu as plusieurs solutions:
1. Tu peux t'amuser à reconstruire le puzzle comme je l'ai fait dans l'exemple ci-dessus en concaténant %1, %2, etc. Gros inconvénient, il faut savoir combien de morceaux on veut recoller.
2. Tu peux passer le paramètre entre guillemets (call :TRT "%%d"), tu récupèreras bien la chaîne en entier à l'autre bout. Inconvénient, tu te traîneras les guillemets dans tous les traitements suivants.
3. Tu peux ne pas passer le nom du répertoire en paramètre mais l'assigner à une variable d'environnement que tu pourras exploiter comme bon te semble plus loin dans ton script. Par exemple:
--- début --- for /f "tokens=* delims=" %%d in ('dir /b doc*') do set Dir=%%d & call :TRT goto :EOF
:TRT echo %Dir% --- fin ---
Résultat: Documents and Settings
J'espère que les explications de Microsoft ont été claires ;-). Bon courage.
Jacques
Jacques Barathon [MS]
"Jacques Barathon [MS]" wrote in message news:
for /f "tokens=* delims=" %%d in ('dir /b doc*') do call :TRT %%d
Désolé pour le "delims=" qui n'a rien à faire là, je l'avais juste mis pour un test et ai oublié de l'enlever avant de copier/coller. Il ne sert à rien, même s'il ne nuit pas.
Jacques
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> wrote in message
news:u3NZR7M1FHA.1988@TK2MSFTNGP10.phx.gbl...
for /f "tokens=* delims=" %%d in ('dir /b doc*') do call :TRT %%d
Désolé pour le "delims=" qui n'a rien à faire là, je l'avais juste mis pour
un test et ai oublié de l'enlever avant de copier/coller. Il ne sert à rien,
même s'il ne nuit pas.
for /f "tokens=* delims=" %%d in ('dir /b doc*') do call :TRT %%d
Désolé pour le "delims=" qui n'a rien à faire là, je l'avais juste mis pour un test et ai oublié de l'enlever avant de copier/coller. Il ne sert à rien, même s'il ne nuit pas.
Jacques
Do Re Mi chel La Si Do
Bonsoir !
On peut aussi utiliser, dans TRT, %* pour récupérer tous les éléments d'un coup :
:TRT echo %*
@+
MCI
Bonsoir !
On peut aussi utiliser, dans TRT, %* pour récupérer tous les éléments d'un
coup :