Je reviens à nouveaux vers vous car j'ai un problème au niveau d'un script
que j'essaye de mettre au point avec des boucles for imbriquées ("nested
loop").
Premièrement, je ne sais pas si ces "boucles" sont supporté en batch donc
cela sera ma première question. Si toutefois cela ne pose pas de problème,
vous pouvez lire la fin de ce message. :p
Deuxièmement, il semble que les valeurs de %errorlevel% soient mal
répercutée lors de ce genre de "tests":
>echo %%a | find /I "String"
dans mon exemple, la valeur de %errorlevel% (dans un script et pas
directement en ligne de commande) vaut toujours 0. Que la chaine de caractère
soit trouvée ou non. Je pense que cette valeur renvoyée correspond à la
commande >echo %%a. Si quelqu'un à déjà eu ce genre de problème peut il m'en
dire d'avantage.
Troisièmement, est t'il possible d'affecter une valeur de variable avec la
commande echo.
ex: echo "string" | set MaVariable=
J'ai essayé de jouer avec plusieurs méthodes, notament avec le symbole ^
devant | mais rien de concluant de ce coté la... Avez vous une idée?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Claude BELLAMY
"Gui" a écrit dans le message de groupe de discussion :
bonjour à tous,
Je reviens à nouveaux vers vous car j'ai un problème au niveau d'un script que j'essaye de mettre au point avec des boucles for imbriquées ("nested loop"). Premièrement, je ne sais pas si ces "boucles" sont supporté en batch donc cela sera ma première question. Et bien OUI !
Il suffit d'essayer, c'te bonne blague ! Ah franchement il y en a qui n'ont pas l'esprit curieux !
Fichier "multifor.cmd" ------- couper ici ------- @echo off for /L %%I in (1 2 9) do ( for /L %%J in (12 -3 3) do ( set /A R=%%I*%%J echo %%I x %%J = !R! ) ) ------- couper ici -------
NB: ATTENTION à l'expansion retardée des variables ! Comme j'utilise une variable d'environnement ("R") à l'intérieur d'une boucle, je dois utiliser les "!" et non pas les "%" pour récupérer sa valeur ! echo %%I x %%J = !R! donne le bon résultat echo %%I x %%J = %R% donnerait un résultat vide !
L'exécution de ce batch donne : C:vbs>multifor.cmd 1 x 12 = 12 1 x 9 = 9 1 x 6 = 6 1 x 3 = 3 3 x 12 = 36 3 x 9 = 27 3 x 6 = 18 3 x 3 = 9 5 x 12 = 60 5 x 9 = 45 5 x 6 = 30 5 x 3 = 15 7 x 12 = 84 7 x 9 = 63 7 x 6 = 42 7 x 3 = 21 9 x 12 = 108 9 x 9 = 81 9 x 6 = 54 9 x 3 = 27
Deuxièmement, il semble que les valeurs de %errorlevel% soient mal répercutée lors de ce genre de "tests":
echo %%a | find /I "String" dans mon exemple, la valeur de %errorlevel% (dans un script et pas
directement en ligne de commande) vaut toujours 0. Que la chaine de caractère soit trouvée ou non. Je pense que cette valeur renvoyée correspond à la commande >echo %%a. Oui, c'est çà
Si quelqu'un à déjà eu ce genre de problème peut il m'en dire d'avantage. Cela se contourne facilement en n'utilisant pas de "pipe"!
Troisièmement, est t'il possible d'affecter une valeur de variable avec la commande echo. NON
ex: echo "string" | set MaVariable Quelle drôle d'idée issue d'un esprit shadok !!!!!!!!
Moi dans ce cas, j'écris bêtement : set MaVariable="string"
J'ai essayé de jouer avec plusieurs méthodes, notament avec le symbole ^ devant | mais rien de concluant de ce coté la... Avez vous une idée? cf. ci-dessus !
Question corollaire : que veux tu faire EX-AC-TE-MENT ?
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
"Gui" <Gui@discussions.microsoft.com> a écrit dans le message de groupe de
discussion : E19D993A-5972-4C2A-A14D-45B8BB7826EF@microsoft.com...
bonjour à tous,
Je reviens à nouveaux vers vous car j'ai un problème au niveau d'un script
que j'essaye de mettre au point avec des boucles for imbriquées ("nested
loop").
Premièrement, je ne sais pas si ces "boucles" sont supporté en batch donc
cela sera ma première question.
Et bien OUI !
Il suffit d'essayer, c'te bonne blague !
Ah franchement il y en a qui n'ont pas l'esprit curieux !
Fichier "multifor.cmd"
------- couper ici -------
@echo off
for /L %%I in (1 2 9) do (
for /L %%J in (12 -3 3) do (
set /A R=%%I*%%J
echo %%I x %%J = !R!
)
)
------- couper ici -------
NB: ATTENTION à l'expansion retardée des variables !
Comme j'utilise une variable d'environnement ("R") à l'intérieur d'une
boucle, je dois utiliser les "!" et non pas les "%" pour récupérer sa valeur
!
echo %%I x %%J = !R! donne le bon résultat
echo %%I x %%J = %R% donnerait un résultat vide !
L'exécution de ce batch donne :
C:vbs>multifor.cmd
1 x 12 = 12
1 x 9 = 9
1 x 6 = 6
1 x 3 = 3
3 x 12 = 36
3 x 9 = 27
3 x 6 = 18
3 x 3 = 9
5 x 12 = 60
5 x 9 = 45
5 x 6 = 30
5 x 3 = 15
7 x 12 = 84
7 x 9 = 63
7 x 6 = 42
7 x 3 = 21
9 x 12 = 108
9 x 9 = 81
9 x 6 = 54
9 x 3 = 27
Deuxièmement, il semble que les valeurs de %errorlevel% soient mal
répercutée lors de ce genre de "tests":
echo %%a | find /I "String"
dans mon exemple, la valeur de %errorlevel% (dans un script et pas
directement en ligne de commande) vaut toujours 0. Que la chaine de
caractère
soit trouvée ou non. Je pense que cette valeur renvoyée correspond à la
commande >echo %%a.
Oui, c'est çà
Si quelqu'un à déjà eu ce genre de problème peut il m'en
dire d'avantage.
Cela se contourne facilement en n'utilisant pas de "pipe"!
Troisièmement, est t'il possible d'affecter une valeur de variable avec la
commande echo.
NON
ex: echo "string" | set MaVariable Quelle drôle d'idée issue d'un esprit shadok !!!!!!!!
Moi dans ce cas, j'écris bêtement :
set MaVariable="string"
J'ai essayé de jouer avec plusieurs méthodes, notament avec le symbole ^
devant | mais rien de concluant de ce coté la... Avez vous une idée?
cf. ci-dessus !
Question corollaire : que veux tu faire EX-AC-TE-MENT ?
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
"Gui" a écrit dans le message de groupe de discussion :
bonjour à tous,
Je reviens à nouveaux vers vous car j'ai un problème au niveau d'un script que j'essaye de mettre au point avec des boucles for imbriquées ("nested loop"). Premièrement, je ne sais pas si ces "boucles" sont supporté en batch donc cela sera ma première question. Et bien OUI !
Il suffit d'essayer, c'te bonne blague ! Ah franchement il y en a qui n'ont pas l'esprit curieux !
Fichier "multifor.cmd" ------- couper ici ------- @echo off for /L %%I in (1 2 9) do ( for /L %%J in (12 -3 3) do ( set /A R=%%I*%%J echo %%I x %%J = !R! ) ) ------- couper ici -------
NB: ATTENTION à l'expansion retardée des variables ! Comme j'utilise une variable d'environnement ("R") à l'intérieur d'une boucle, je dois utiliser les "!" et non pas les "%" pour récupérer sa valeur ! echo %%I x %%J = !R! donne le bon résultat echo %%I x %%J = %R% donnerait un résultat vide !
L'exécution de ce batch donne : C:vbs>multifor.cmd 1 x 12 = 12 1 x 9 = 9 1 x 6 = 6 1 x 3 = 3 3 x 12 = 36 3 x 9 = 27 3 x 6 = 18 3 x 3 = 9 5 x 12 = 60 5 x 9 = 45 5 x 6 = 30 5 x 3 = 15 7 x 12 = 84 7 x 9 = 63 7 x 6 = 42 7 x 3 = 21 9 x 12 = 108 9 x 9 = 81 9 x 6 = 54 9 x 3 = 27
Deuxièmement, il semble que les valeurs de %errorlevel% soient mal répercutée lors de ce genre de "tests":
echo %%a | find /I "String" dans mon exemple, la valeur de %errorlevel% (dans un script et pas
directement en ligne de commande) vaut toujours 0. Que la chaine de caractère soit trouvée ou non. Je pense que cette valeur renvoyée correspond à la commande >echo %%a. Oui, c'est çà
Si quelqu'un à déjà eu ce genre de problème peut il m'en dire d'avantage. Cela se contourne facilement en n'utilisant pas de "pipe"!
Troisièmement, est t'il possible d'affecter une valeur de variable avec la commande echo. NON
ex: echo "string" | set MaVariable Quelle drôle d'idée issue d'un esprit shadok !!!!!!!!
Moi dans ce cas, j'écris bêtement : set MaVariable="string"
J'ai essayé de jouer avec plusieurs méthodes, notament avec le symbole ^ devant | mais rien de concluant de ce coté la... Avez vous une idée? cf. ci-dessus !
Question corollaire : que veux tu faire EX-AC-TE-MENT ?
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Gui
Premièrement, je ne sais pas si ces "boucles" sont supporté en batch donc cela sera ma première question. Et bien OUI !
Il suffit d'essayer, c'te bonne blague ! Ah franchement il y en a qui n'ont pas l'esprit curieux ! Si si, mais je testai plus ou moins mon script en meme temps que ce message.
Et surtout, il y a ce qui marche et ce qui est supporté :)
NB: ATTENTION à l'expansion retardée des variables ! Comme j'utilise une variable d'environnement ("R") à l'intérieur d'une boucle, je dois utiliser les "!" et non pas les "%" pour récupérer sa valeur ! echo %%I x %%J = !R! donne le bon résultat echo %%I x %%J = %R% donnerait un résultat vide ! ca ok, pas de souci, j'utilisais déja, mais merci pour le rappel !
Si quelqu'un à déjà eu ce genre de problème peut il m'en dire d'avantage. Cela se contourne facilement en n'utilisant pas de "pipe"!
.... echo %%a > test.tmp find /I "String" test.tmp > nul if %errorlevel% .... pas pratique et ca ne me plait pas trop dans ce que je veux faire de jouer
avec les fichiers.
Question corollaire : que veux tu faire EX-AC-TE-MENT ? l'idée est de lire un fichier de parametres séparé par des sections
([section]) et de passer ensuite ces parametres au lancement d'un programme.
Merci de ton aide. Gui
Premièrement, je ne sais pas si ces "boucles" sont supporté en batch donc
cela sera ma première question.
Et bien OUI !
Il suffit d'essayer, c'te bonne blague !
Ah franchement il y en a qui n'ont pas l'esprit curieux !
Si si, mais je testai plus ou moins mon script en meme temps que ce message.
Et surtout, il y a ce qui marche et ce qui est supporté :)
NB: ATTENTION à l'expansion retardée des variables !
Comme j'utilise une variable d'environnement ("R") à l'intérieur d'une
boucle, je dois utiliser les "!" et non pas les "%" pour récupérer sa valeur
!
echo %%I x %%J = !R! donne le bon résultat
echo %%I x %%J = %R% donnerait un résultat vide !
ca ok, pas de souci, j'utilisais déja, mais merci pour le rappel !
Si quelqu'un à déjà eu ce genre de problème peut il m'en
dire d'avantage.
Cela se contourne facilement en n'utilisant pas de "pipe"!
....
echo %%a > test.tmp
find /I "String" test.tmp > nul
if %errorlevel% ....
pas pratique et ca ne me plait pas trop dans ce que je veux faire de jouer
avec les fichiers.
Question corollaire : que veux tu faire EX-AC-TE-MENT ?
l'idée est de lire un fichier de parametres séparé par des sections
([section]) et de passer ensuite ces parametres au lancement d'un programme.
Premièrement, je ne sais pas si ces "boucles" sont supporté en batch donc cela sera ma première question. Et bien OUI !
Il suffit d'essayer, c'te bonne blague ! Ah franchement il y en a qui n'ont pas l'esprit curieux ! Si si, mais je testai plus ou moins mon script en meme temps que ce message.
Et surtout, il y a ce qui marche et ce qui est supporté :)
NB: ATTENTION à l'expansion retardée des variables ! Comme j'utilise une variable d'environnement ("R") à l'intérieur d'une boucle, je dois utiliser les "!" et non pas les "%" pour récupérer sa valeur ! echo %%I x %%J = !R! donne le bon résultat echo %%I x %%J = %R% donnerait un résultat vide ! ca ok, pas de souci, j'utilisais déja, mais merci pour le rappel !
Si quelqu'un à déjà eu ce genre de problème peut il m'en dire d'avantage. Cela se contourne facilement en n'utilisant pas de "pipe"!
.... echo %%a > test.tmp find /I "String" test.tmp > nul if %errorlevel% .... pas pratique et ca ne me plait pas trop dans ce que je veux faire de jouer
avec les fichiers.
Question corollaire : que veux tu faire EX-AC-TE-MENT ? l'idée est de lire un fichier de parametres séparé par des sections
([section]) et de passer ensuite ces parametres au lancement d'un programme.