Windows batch, Problème avec commande Choice

Résolu/Fermé
Grandbuffle Messages postés 2 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 21 novembre 2011 - Modifié par Grandbuffle le 19/11/2011 à 02:39
Grandbuffle Messages postés 2 Date d'inscription samedi 19 novembre 2011 Statut Membre Dernière intervention 21 novembre 2011 - 21 nov. 2011 à 13:56
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 mercredi 4 juin 2008 Statut Membre Dernière intervention 16 octobre 2024 653
19 nov. 2011 à 08:48
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 samedi 19 novembre 2011 Statut Membre Dernière intervention 21 novembre 2011
21 nov. 2011 à 13:56
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