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 -
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.
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:
- Windows batch, Problème avec commande Choice
- Invite de commande windows - Guide
- Clé windows 8 - Guide
- Montage video windows - Guide
- Windows ne démarre pas - Guide
- Windows movie maker - Télécharger - Montage & Édition
2 réponses
Ce ne serait pas plus simple d'utiliser la fonction 'copier' de Free Commander qui fait cela très bien.
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.
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.