Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

pas de goto dans une boucle FOR avec parenthese

4 réponses
Avatar
Th.A.C
Bonjour,

sous WXP, il semble que je n'ai pas le droit de mettre une étiquette
dans une boucle for sur plusieurs lignes

exemple
------------------------------
for /d %%I in ("c:\*.*") do (

if /i "%%I"=="c:\windows" goto boucle
echo %%I

:boucle

)
------------------------------
j'ai le message d'erreur suivant:
"La syntaxe de la commande est incorrecte."

si je met l'étiquette ":boucle" après la parenthèse fermante, je n'ai
plus d'erreur

Si vous avez une idée?

Thierry

4 réponses

Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonsoir !

Ce n'est pas lié à XP.

Dans les batchs, GOTO provoque une rupture complète du script, sans empilement (mémorisation) de la
position de départ, ce qui entraîne une rupture (de l'exécution) du bloc de lignes.

Pour contourner ça, on peut utiliser un CALL, comme dans l'exemple suivant :

@echo off
for /d %%I in ("c:*.*") do call :SUB %%I
goto :EOF

:SUB
if /i "%1"=="c:windows" goto :EOF
echo %1

(explication : l'étiquette :EOF est implicite ; c'est la fin du fichier ; et la fin du fichier sert
de Return à un Call)


@-salutations

Michel Claveau
Avatar
Th.A.C
Bonsoir !

Ce n'est pas lié à XP.

Dans les batchs, GOTO provoque une rupture complète du script, sans
empilement (mémorisation) de la position de départ, ce qui entraîne une
rupture (de l'exécution) du bloc de lignes.

Pour contourner ça, on peut utiliser un CALL, comme dans l'exemple
suivant :

@echo off
for /d %%I in ("c:*.*") do call :SUB %%I
goto :EOF

:SUB
if /i "%1"=="c:windows" goto :EOF
echo %1

(explication : l'étiquette :EOF est implicite ; c'est la fin du fichier
; et la fin du fichier sert de Return à un Call)


c'est bien dommage, ca m'aurait permis de programmer plus proprement des
tests en série.

Merci pour l'explication :-)

Thierry

Avatar
Th.A.C
J'ai un peu honte (sisi), mais mon .hta n'était pas bon. Il utilisait du
javascript au lieu du vbscript (j'avais pas vérifié!!!)

J'ai testé un petit hta que j'avais fait pour tester et ca marche. :-)

Vraiment désolé.

sinon, je cherche une alternative à ceci (en vbs) toujours sous winpe:
Set oIE = CreateObject("InternetExplorer.Application")
Avatar
Th.A.C

J'ai un peu honte (sisi), mais mon .hta n'était pas bon. Il utilisait du
javascript au lieu du vbscript (j'avais pas vérifié!!!)

J'ai testé un petit hta que j'avais fait pour tester et ca marche. :-)

Vraiment désolé.

sinon, je cherche une alternative à ceci (en vbs) toujours sous winpe:
Set oIE = CreateObject("InternetExplorer.Application")



gloups, je me suis trompé de sujet, désolé