Je me pose une question sur la commande Call: Quand la "procédure" appelée se trouve en fin de fichier, pas de problème, mais quand j'ai du code après, il se retrouve exécuté comme si il se trouvait dans la procédure:
Code :
- Setlocal enabledelayedexpansion
- SET fichier=
- for %%F in (c:\*) do (
- SET fichier=%%~nxF
- call :nxt
- )
- goto End
- :nxt
- ECHO fichier: !fichier!
- :End
- ECHO test
|
=> dans le cas présent, à chaque tour de boucle la commande "ECHO test" est exécutée, alors que je la voudrai seulement après la boucle.
Plutôt logique puisque la ligne ":End" n'indique pas la fin de la procédure.
J'ai consulté l'aide de la commande Call, et je trouve l'explication un peu obscure
Code :
- La commande CALL accepte maintenant des étiquettes comme cible de CALL. La
- syntaxe est :
- CALL :étiquette arguments
- Un nouveau contexte de fichier de commandes est créé avec les arguments
- spécifiés et le contrôle est transmis à la commande suivant l'étiquette
- spécifiée. Vous devez "quitter" deux fois en atteignant la fin du script du
- fichier de commandes deux fois. La première fois que vous lisez la fin, le
- contrôle reviendra juste après la commande CALL. La seconde fois vous
- quitterez le script de commandes. Entrez GOTO /? pour une description de
- l'extension GOTO :EOF qui vous permettra de "retourner" en dehors d'un script
- de commandes.
|
EDIT:
La réponse était tout bète
Si ca peut servir à d'autres...
Code :
- Setlocal enabledelayedexpansion
- SET fichier=
- for %%F in (c:\*) do (
- SET fichier=%%~nxF
- call :nxt
- )
- goto End
- :nxt
- ECHO fichier: !fichier!
- GOTO :EOF
- :End
- ECHO test
|
Message édité par aspegic500mg le 27-10-2008 à 10:10:54