pas de goto dans une boucle FOR avec parenthese

Le
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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MCI \(ex do ré Mi chel la si do\) [MVP]
Le #691386
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
Th.A.C
Le #691382
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

Th.A.C
Le #690509
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")
Th.A.C
Le #690316

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é

Publicité
Poster une réponse
Anonyme