Windows batch, Problème avec commande Choice

Résolu
Grandbuffle Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Grandbuffle Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voila, je dois faire un script .cmd à l'aide du notepad de Windows. Le but est de créer une corbeille qui déplacera un ou plusieurs fichiers dans un répertoire. Si un des fichiers est déjà présent dans le répertoire on demandera à l'utilisateur si il veut écraser le fichier. Seulement voila si cela se produit que pour un seul fichier je voudrais qu'il traite quand même les fichiers suivants.

Voila ce que j'ai produit :

@echo off

If "%1" == "" goto ParametreExistePas
If "%1" == "/?" goto Aide
If EXIST %1 goto CorbeilleExisteOuPas

:Continuer

For %%X in (%*) do (

If NOT EXIST %%X echo Fichier %%X Introuvable

If EXIST C:\Corbeille.dir\%%X ( echo "Écraser le fichier %%X (O)ui, (N)on :"

Choice /t 10 /d N

If errorlevel 2 echo bye

If errorlevel 1 echo allo

)

If NOT EXIST C:\Corbeille.dir\%%X copy %%X C:\Corbeille.dir

)

goto :EOF

:CorbeilleExisteOuPas
If NOT EXIST C:\Corbeille.dir mkdir C:\Corbeille.dir
goto Continuer

:ParametreExistePas
echo Vous devez fournir au moins un nom de fichier ou /? pour de l'aide...
goto :EOF

:Aide
echo Ceci est l'aide
goto :EOF


En vous remerciant par avance :)
Cordialement, Geoffrey.
A voir également:

2 réponses

ginto5 Messages postés 11354 Date d'inscription   Statut Membre Dernière intervention   653
 
Ce ne serait pas plus simple d'utiliser la fonction 'copier' de Free Commander qui fait cela très bien.
0
Grandbuffle Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Bon j'ai trouvé la solution. En fait il faut utiliser des call pour que la boucle continue son petit chemin.

Par exemple, au lieu de mettre If errorlevel 1 echo bye ou encore goto une etiquette qui écrit "bye" il faut faire un call.

If errorlevel 1 call :Ecrirebye et la dans l'étiquette qui EST EN DEHORS de la boucle vous faites ce que vous voulez :)
La commande call agit comme une procédure et reviendra dans la boucle une fois l'étiquette terminé. Utilisé un goto :EOF à la fin de celle-ci par contre ;)

Cordialement, Geoffrey.
0