Prog .bat
Résolu/Fermé
yoann.15987
Messages postés
15
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
28 juillet 2009
-
3 oct. 2008 à 21:31
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 13 oct. 2008 à 22:43
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 13 oct. 2008 à 22:43
A voir également:
- Prog .bat
- Fichier bat - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
- Robot prog - Télécharger - Édition & Programmation
- Bouchou ka bat traduction ✓ - Forum traduction
- Pokemon qui bat qui ✓ - Forum Pokémon
7 réponses
yoann.15987
Messages postés
15
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
28 juillet 2009
1
7 oct. 2008 à 14:07
7 oct. 2008 à 14:07
personne veux m'aider ???
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
7 oct. 2008 à 23:54
7 oct. 2008 à 23:54
Bonsoir,
voila ma prof veux qu'on fasse un programme en .bat mais le problème c'est qu'elle nous a mi de coté ceux qui savent pas et aider les mecs qui savait déjà faire. on est a l'école pour apprend merde. bref y'a t il qu'elle qu'un qui peut m'aider et m'expliquer le truc que ma prof veux? ça serai gentil . merci
ça c'est l'exemple de la prof elle nous a dit qu'il faller faire pareil pour sauvegarder ( xcopy je croi) et supprimer ( del ?) aider moi sil vous plais
Je crois que ce que ta prof. souhaite c'est que tu t'inspires de l'existant et que tu y insères les deux commandes XCOPY et DEL, c'est tout je pense.
J'ai taillé un exemplaire à partir de l'algo. existant. Je l'ai voulu modulaire (CALL) ne serait-ce que pour éviter de dupliquer la séquence "saisie et contrôle du répertoire". j'ai quelque peu remanié et ajouté des séquences aussi. Tu peux le tester en l'état, il ne te reste qu'à ajouter les commandes XCOPY et DEL aux endroits indiqués. La fonction "aff" fonctionne. A toi maintenant !
J'ai fait quelques tests concluants. Tiens moi informé de tes tests, merci.
voila ma prof veux qu'on fasse un programme en .bat mais le problème c'est qu'elle nous a mi de coté ceux qui savent pas et aider les mecs qui savait déjà faire. on est a l'école pour apprend merde. bref y'a t il qu'elle qu'un qui peut m'aider et m'expliquer le truc que ma prof veux? ça serai gentil . merci
ça c'est l'exemple de la prof elle nous a dit qu'il faller faire pareil pour sauvegarder ( xcopy je croi) et supprimer ( del ?) aider moi sil vous plais
Je crois que ce que ta prof. souhaite c'est que tu t'inspires de l'existant et que tu y insères les deux commandes XCOPY et DEL, c'est tout je pense.
J'ai taillé un exemplaire à partir de l'algo. existant. Je l'ai voulu modulaire (CALL) ne serait-ce que pour éviter de dupliquer la séquence "saisie et contrôle du répertoire". j'ai quelque peu remanié et ajouté des séquences aussi. Tu peux le tester en l'état, il ne te reste qu'à ajouter les commandes XCOPY et DEL aux endroits indiqués. La fonction "aff" fonctionne. A toi maintenant !
SETLOCAL ENABLEdelayedExpansion SETLOCAL ENABLEextensions CLS SET "rep=%1" :debut CALL :CONTROL_REP rem cls IF "%rep%" == "$" ( ECHO. ECHO $ saisi : Fin du traitement %0. GOTO :EOF ) :TEST_CHOIX cls IF NOT "%rep%" == "" ( ECHO. ECHO Repertoire accede : %rep% ) ECHO. echo 1.affchage echo 2.sauvegarde echo 3.suppression ECHO 4.Choix d'un nouveau repertoire ECHO. ECHO $.FIN du traitement ECHO. set/P "choix=faites votre choix (1.2.3.4.$) " IF "%choix%" == "$" ( ECHO $ saisi : Fin du traitement %0 GOTO :EOF ) if "%choix%" == "1" ( CALL :aff ) ELSE ( if "%choix%" == "2" ( CALL :sauv ) ELSE ( if "%choix%" == "3" ( CALL :supp ) ELSE ( IF "%choix%" == "4" ( SET "rep=" GOTO debut ) ELSE ( echo valeur non conforme : tapez 1 . 2 . 3 . 4 ou $ pause SET "choix=" )))) GOTO TEST_CHOIX rem -------------------------------------------------------------------- rem Sous-programme d'affichage de la directorie rem -------------------------------------------------------------------- :aff cls dir %rep% pause rem Fin du Sous-programme. Retour après la commande: CALL :aff GOTO :EOF rem -------------------------------------------------------------------- rem -------------------------------------------------------------------- rem Sous-programme de sauvegrde de la directorie rem -------------------------------------------------------------------- :sauv cls ECHO Insere ici la commande de sauvegarde COPY rem pause rem Fin du Sous-programme. Retour après la commande: CALL :sauv GOTO :EOF rem -------------------------------------------------------------------- rem -------------------------------------------------------------------- rem Sous-programme de sauvegrde de la directorie rem -------------------------------------------------------------------- :supp cls ECHO Insere ici la commande de suppression DEL rem pause rem Fin du Sous-programme. Retour après la commande: CALL :supp GOTO :EOF rem -------------------------------------------------------------------- rem -------------------------------------------------------------------- rem Sous-programme de saisie et de contrôle du nom du repertoire. rem -------------------------------------------------------------------- :CONTROL_REP IF "%rep%" == "" ( set /p "rep=Entrez un nom de repertoire " ) IF "%rep%" == "" ( ECHO. ECHO Aucun nom de repertoire n'a ete saisi. GOTO CONTROL_REP ) IF "%rep%" == "$" ( GOTO :EOF ) if not exist %rep% ( ECHO. ECHO %rep%: Repertoire inconnu. ECHO. SET "rep=" goto CONTROL_REP ) rem Fin du Sous-programme. Retour après la commande: CALL :CONTROL_REP GOTO :EOF rem --------------------------------------------------------------------
J'ai fait quelques tests concluants. Tiens moi informé de tes tests, merci.
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
8 oct. 2008 à 16:03
8 oct. 2008 à 16:03
RECTIFICATIFS :
Double quotes :
La commande : dir %rep% doit se coder : dir "%rep%"
de même la commande :
IF NOT EXIST %rep% (
doit se coder :
IF NOT EXIST "%rep%" (
pareil pour :
ECHO Repertoire accede : %rep% )
doit se coder :
ECHO Repertoire accede : "%rep%" )
Ceci afin de prendre rep en tant que chaînes de caractères comprenant des espaces possibles ex :
C:\Documents and Settings\....................
Pour la même raison la commande :
SET "rep=%1"
doit être codée :
SET "rep=%1 %2 %3 %4 %5 %6 %7 %8 %9" (max. 9 groupes de c. séparés par un espace, dans le nom d'un répertoire)
suivie du test :
IF "%rep%" == " " ( SET "rep=" )
Double quotes :
La commande : dir %rep% doit se coder : dir "%rep%"
de même la commande :
IF NOT EXIST %rep% (
doit se coder :
IF NOT EXIST "%rep%" (
pareil pour :
ECHO Repertoire accede : %rep% )
doit se coder :
ECHO Repertoire accede : "%rep%" )
Ceci afin de prendre rep en tant que chaînes de caractères comprenant des espaces possibles ex :
C:\Documents and Settings\....................
Pour la même raison la commande :
SET "rep=%1"
doit être codée :
SET "rep=%1 %2 %3 %4 %5 %6 %7 %8 %9" (max. 9 groupes de c. séparés par un espace, dans le nom d'un répertoire)
suivie du test :
IF "%rep%" == " " ( SET "rep=" )
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
>
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
8 oct. 2008 à 17:11
8 oct. 2008 à 17:11
RECTIFICATIFS (suite)
Le dernier test du pécédent message doit comporter 8 espaces (cas où aucun répertoire n'est saisi en paramètre suivant le nom du .bat ) :
Il est également possible de formaliser ce test sous cette forme :
Le dernier test du pécédent message doit comporter 8 espaces (cas où aucun répertoire n'est saisi en paramètre suivant le nom du .bat ) :
IF "%rep%" == " " ( SET "rep=" )
Il est également possible de formaliser ce test sous cette forme :
IF "%1" == "" ( SET "rep=" )
yoann.15987
Messages postés
15
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
28 juillet 2009
1
8 oct. 2008 à 21:07
8 oct. 2008 à 21:07
franchement je te remercie je me met dessus et je te dit si ça se passe bien
merci si j'ai des question je te tient au courant
merci si j'ai des question je te tient au courant
yoann.15987
Messages postés
15
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
28 juillet 2009
1
10 oct. 2008 à 20:27
10 oct. 2008 à 20:27
bonjour
j'ai tout rectifier la fonction del marche mais pour sauv j'ai mis ca
:sauv
cls
xcopy "%rep%"
rem
pause
rem Fin du Sous-programme. Retour après la commande: CALL :sauv
GOTO :EOF
il faut pas rajouter quelque chose parceque a chaque fois il me dit si je veut le remplacer ?
merci
j'ai tout rectifier la fonction del marche mais pour sauv j'ai mis ca
:sauv
cls
xcopy "%rep%"
rem
pause
rem Fin du Sous-programme. Retour après la commande: CALL :sauv
GOTO :EOF
il faut pas rajouter quelque chose parceque a chaque fois il me dit si je veut le remplacer ?
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
11 oct. 2008 à 17:59
11 oct. 2008 à 17:59
Bonjour,
Il faut préciser un répertoire de sauvegarde ici Save_rep
D'autre part je joins la dernière version du batch qui règle le problème des espaces disséminés dans un nom de répertoire (le problème n'était pas complètement résolu, je m'en suis rendu compte en faisant quelques tests supplémentaires) Pour ce faire j'ai ajouté un petit sous-programme :
en fin de fichier.
:LOOP_PARAM
L'appel à ce S.P.
CALL :LOOP_PARAM %1 %2 %3 %4 %5 %6 %7 %8 %9
se trouve au début du fichier.
Il faut préciser un répertoire de sauvegarde ici Save_rep
:sauv cls SET "Save_rep=C:\Documents and Settings\Christian\Mes documents\Save_rep" rem ECHO Insere ici la commande de sauvegarde COPY XCOPY "%rep%" "%Save_rep%" /E
D'autre part je joins la dernière version du batch qui règle le problème des espaces disséminés dans un nom de répertoire (le problème n'était pas complètement résolu, je m'en suis rendu compte en faisant quelques tests supplémentaires) Pour ce faire j'ai ajouté un petit sous-programme :
en fin de fichier.
:LOOP_PARAM
L'appel à ce S.P.
CALL :LOOP_PARAM %1 %2 %3 %4 %5 %6 %7 %8 %9
se trouve au début du fichier.
ECHO OFF SETLOCAL ENABLEdelayedExpansion SETLOCAL ENABLEextensions CLS rem Marge gauche (40 espaces) servant à centrer l'affichage des informations. SET "marge=" FOR /L %%I IN (0,1,40) DO ( SET "marge=!marge! " ) rem SET "marge= " SET "rep=" SET "separ_dos=" SET "lib_anom= " CALL :LOOP_PARAM %1 %2 %3 %4 %5 %6 %7 %8 %9 :debut CALL :CONTROL_REP IF "%rep%" == "$" ( ECHO. ECHO $ saisi : Fin du traitement %0. GOTO :EOF ) :TEST_CHOIX CLS FOR /L %%I IN (0,1,20) DO ( ECHO. ) IF NOT "%rep%" == "" ( ECHO. ECHO Repertoire accede : "%rep%" ) ECHO. ECHO. ECHO %marge% 1. A f f i c h a g e. ECHO. ECHO %marge% 2. S a u v e g a r d e. ECHO. ECHO %marge% 3. S u p p r e s s i o n. ECHO. ECHO %marge% 4. N o u v e a u r e p e r t o i r e. ECHO. ECHO. ECHO %marge% $. F I N d u t r a i t e m e n t. ECHO. ECHO. SET /P "choix=%lib_anom% faites votre choix : " SET "lib_anom= " rem SET "lib_anom=%marge%" IF "%choix%" == "$" ( ECHO $ saisi : Fin du traitement %0 GOTO :EOF ) IF "%choix%" == "1" ( CALL :aff ) ELSE ( IF "%choix%" == "2" ( CALL :sauv ) ELSE ( IF "%choix%" == "3" ( CALL :supp ) ELSE ( IF "%choix%" == "4" ( SET "rep=" SET "choix=" GOTO debut ) ELSE ( SET "lib_anom=%choix% : valeur saisie non conforme." IF "%choix%" == "" ( SET "lib_anom=Aucun choix n'a ete effectue." ) ) ) ) ) SET "choix=" GOTO TEST_CHOIX rem -------------------------------------------------------------------- rem Sous-programme d'affichage de la directorie rem -------------------------------------------------------------------- :aff cls dir "%rep%" pause rem Fin du Sous-programme. Retour après la commande: CALL :aff GOTO :EOF rem -------------------------------------------------------------------- rem -------------------------------------------------------------------- rem Sous-programme de sauvegrde de la directorie rem -------------------------------------------------------------------- :sauv cls SET "Save_rep=C:\Documents and Settings\Christian\Mes documents\Save_rep" ECHO Insere ici la commande de sauvegarde COPY rem XCOPY "%rep%" "%Save_rep%" /E rem pause rem Fin du Sous-programme. Retour après la commande: CALL :sauv GOTO :EOF rem -------------------------------------------------------------------- rem -------------------------------------------------------------------- rem Sous-programme de sauvegrde de la directorie rem -------------------------------------------------------------------- :supp cls ECHO Insere ici la commande de suppression DEL rem pause rem Fin du Sous-programme. Retour après la commande: CALL :supp GOTO :EOF rem -------------------------------------------------------------------- rem -------------------------------------------------------------------- rem Sous-programme de saisie et de contrôle du nom du repertoire. rem -------------------------------------------------------------------- :CONTROL_REP IF "%rep%" == "" ( ECHO. SET /p "rep=Entrez un nom de repertoire " ) IF "%rep%" == "" ( ECHO. ECHO Aucun nom de repertoire n'a ete saisi. GOTO CONTROL_REP ) IF "%rep%" == "$" ( GOTO :EOF ) IF NOT EXIST "%rep%" ( ECHO. ECHO "%rep%": Repertoire inconnu. ECHO. SET "rep=" GOTO CONTROL_REP ) rem Fin du Sous-programme. Retour après la commande: CALL :CONTROL_REP GOTO :EOF rem -------------------------------------------------------------------- rem ------------------------------------------------------------------------ rem Sous-programme de construction du nom du repertoire passé en paramètres rem par concaténation dans la variable rep des noms séparés par un espace. rem ------------------------------------------------------------------------ :LOOP_PARAM IF NOT "%1" == "" ( SET "rep=!rep!!separ_dos!%1" SET "separ_dos= " SHIFT GOTO LOOP_PARAM ) rem Fin du Sous-programme. Retour après la commande: CALL :LOOP_PARAM GOTO :EOF rem --------------------------------------------------------------------
yoann.15987
Messages postés
15
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
28 juillet 2009
1
11 oct. 2008 à 23:30
11 oct. 2008 à 23:30
merci a toi
je travaille dessus par ce que c'est un peu compliquer comme ta la fait mais j'ai compris.
faut que je passe une petite journé dessus par ce que les commande que tu a mis
on les a pas appris et je pense que notre prof les connai même pas
merci a bientôt.
je travaille dessus par ce que c'est un peu compliquer comme ta la fait mais j'ai compris.
faut que je passe une petite journé dessus par ce que les commande que tu a mis
on les a pas appris et je pense que notre prof les connai même pas
merci a bientôt.
yoann.15987
Messages postés
15
Date d'inscription
vendredi 3 octobre 2008
Statut
Membre
Dernière intervention
28 juillet 2009
1
13 oct. 2008 à 20:43
13 oct. 2008 à 20:43
bonjour
moi j'ai fait ca mais le problème c'est que qu'an je tape un repertoire ca marche pas pourquoi?
je croi que pour commprendre le tien il me faut un peu plus de temps.
tu peut m'aider ?
@echo off
:debut
cls
echo.
echo Que voulez vous faire du repertoire ?
echo.
echo.
echo 1 . l'affichager
echo.
echo 2 . le sauvegarder
echo.
echo 3 . le supprimer
echo.
echo.
set/P choix= Faites votre choix (1.2.3)
if "%choix%"=="1" goto aff
if "%choix%"=="2" goto sauv
if "%choix%"=="3" goto supp
echo valeur non conforme : tapez 1 . 2 ou 3
pause
goto debut
:aff
if "%1"=="" goto rep
if exist %1\nul goto dir
:erreur
echo reprtoire inexistant
pause
goto debut
:rep
echo.
set /p rep=Entrez un nom de repertoire
if not exist %rep% goto erreur
dir %rep%
pause
:dir
cd %1
dir
pause
goto debut
:sauv
if "%2"=="" goto rep
if exist %2\nul goto DIR
:erreur
echo reprtoire inexistant
pause
goto debut
:rep
echo.
seT /p SAUV=Entrez un nom de repertoire a sauvgarder
if not exiSt %SAUV% goto erreur
cd %SAUV%
dir
pause
goto debut
:dir
cd %2
XCOPY "%rep%" "%Save_rep%" /E
pause
goto debut
:supp
if "%3"=="" goto rep
if exist %3\nul goto DIR
:erreur
echo repertoire inexistant
pause
goto debut
:rep
echo.
set /p supp=Entrez un nom de repertoire a supprimer
if not exist %supp% goto erreur
cd %supp%
dir pause
goto debut
:dir
cd %3
rd "%rep%"
pause
goto debut
moi j'ai fait ca mais le problème c'est que qu'an je tape un repertoire ca marche pas pourquoi?
je croi que pour commprendre le tien il me faut un peu plus de temps.
tu peut m'aider ?
@echo off
:debut
cls
echo.
echo Que voulez vous faire du repertoire ?
echo.
echo.
echo 1 . l'affichager
echo.
echo 2 . le sauvegarder
echo.
echo 3 . le supprimer
echo.
echo.
set/P choix= Faites votre choix (1.2.3)
if "%choix%"=="1" goto aff
if "%choix%"=="2" goto sauv
if "%choix%"=="3" goto supp
echo valeur non conforme : tapez 1 . 2 ou 3
pause
goto debut
:aff
if "%1"=="" goto rep
if exist %1\nul goto dir
:erreur
echo reprtoire inexistant
pause
goto debut
:rep
echo.
set /p rep=Entrez un nom de repertoire
if not exist %rep% goto erreur
dir %rep%
pause
:dir
cd %1
dir
pause
goto debut
:sauv
if "%2"=="" goto rep
if exist %2\nul goto DIR
:erreur
echo reprtoire inexistant
pause
goto debut
:rep
echo.
seT /p SAUV=Entrez un nom de repertoire a sauvgarder
if not exiSt %SAUV% goto erreur
cd %SAUV%
dir
pause
goto debut
:dir
cd %2
XCOPY "%rep%" "%Save_rep%" /E
pause
goto debut
:supp
if "%3"=="" goto rep
if exist %3\nul goto DIR
:erreur
echo repertoire inexistant
pause
goto debut
:rep
echo.
set /p supp=Entrez un nom de repertoire a supprimer
if not exist %supp% goto erreur
cd %supp%
dir pause
goto debut
:dir
cd %3
rd "%rep%"
pause
goto debut
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
13 oct. 2008 à 22:43
13 oct. 2008 à 22:43
Bonsoir,
Selon moi certaines choses ne vont pas dans ton programme :
1) Le nom de paragraphe :dir apparaît à plusieurs reprises. Un nom de paragraphe permet un débranchement de la logique d'exécution vers une séquence d'instructions du programme qui est
subordonnée à ce nom de paragraphe, en conséquence, il ne peut apparaître ainsi nommé :dir qu'une seule fois
(mais par contre il peut être référencé par exemple , par un ordre GOTO, à plusieurs endroits du programme).
Ce que tu as tenté de créer de cette façon c'est ce qui est fait avec les ordres CALL dans mon exemple. au
moment (dans ta logique d'exécution) où tu as besoin d'exécuter une séquence d'ordes tu l'appelles avec l'ordre CALL, elle est exécutée, et à la rencontre d'un ordre GOTO :EOF (présent dans cette séquence appelée), la logique d'exécution se rebranche sur l'ordre qui suit le CALL d'appel. Ca me semble plus simple
à comprendre et surtout à mettre en oeuvre qu'une série de GOTO qu'il est bien difficille de gérer.
2) Je n'ai pas très bien compris l'utilisation que tu fais des paramètres de passation %1, %2, %3. Tu sembles considérer qu'ils vont de pair avec les valeurs des 3 possibilités de choix du menu 1, 2, 3. Chaque paramètre de passation est positionnel relativement à celui ou ceux qui le précède(nt). %1 est présent (à une valeur différente de "") si une valeur et effectivement codée à la suite du nom du batch.
ex: nom_du_batch c:\ (dans ce cas %0 vaut nom_du_batch et %1 vaut c:\)
De même %2 n'a de réalité (différent de "") que si %1 est effectivement codé :
ex: nom_du_batch c:\ c :\documents..\ (dans ce cas %0 vaut nom_du_batch,
%1 vaut c:\ et %2 vaut c :\documents....\) et ainsi de suite jusqu'à %9 au maximum. Mais si je code
de la façon suivante à l'appel (sous l'invite de commandes) :
ex: nom_du_batch c :\documents..\ (dans ce cas %0 vaut nom_du_batch,
%1 vaut c :\documents....\) %2 n'existe pas (plus) !
Ta façon de procéder laisserait présumer que %1 %2 et %3 sont systématiquement codés à l'appel, avant
même de connaître le choix 1, 2, ou 3, qui va être effectué.
Il y a au moins cela à corriger, je pense. Autrement je l'ai fait tourner un peu en affichage (choix 1), ça donne un résultat qui peut être considéré comme satisfaisant compte tenu de l'état d'avancement (non finalisé) du travail.
Selon moi certaines choses ne vont pas dans ton programme :
1) Le nom de paragraphe :dir apparaît à plusieurs reprises. Un nom de paragraphe permet un débranchement de la logique d'exécution vers une séquence d'instructions du programme qui est
subordonnée à ce nom de paragraphe, en conséquence, il ne peut apparaître ainsi nommé :dir qu'une seule fois
(mais par contre il peut être référencé par exemple , par un ordre GOTO, à plusieurs endroits du programme).
Ce que tu as tenté de créer de cette façon c'est ce qui est fait avec les ordres CALL dans mon exemple. au
moment (dans ta logique d'exécution) où tu as besoin d'exécuter une séquence d'ordes tu l'appelles avec l'ordre CALL, elle est exécutée, et à la rencontre d'un ordre GOTO :EOF (présent dans cette séquence appelée), la logique d'exécution se rebranche sur l'ordre qui suit le CALL d'appel. Ca me semble plus simple
à comprendre et surtout à mettre en oeuvre qu'une série de GOTO qu'il est bien difficille de gérer.
2) Je n'ai pas très bien compris l'utilisation que tu fais des paramètres de passation %1, %2, %3. Tu sembles considérer qu'ils vont de pair avec les valeurs des 3 possibilités de choix du menu 1, 2, 3. Chaque paramètre de passation est positionnel relativement à celui ou ceux qui le précède(nt). %1 est présent (à une valeur différente de "") si une valeur et effectivement codée à la suite du nom du batch.
ex: nom_du_batch c:\ (dans ce cas %0 vaut nom_du_batch et %1 vaut c:\)
De même %2 n'a de réalité (différent de "") que si %1 est effectivement codé :
ex: nom_du_batch c:\ c :\documents..\ (dans ce cas %0 vaut nom_du_batch,
%1 vaut c:\ et %2 vaut c :\documents....\) et ainsi de suite jusqu'à %9 au maximum. Mais si je code
de la façon suivante à l'appel (sous l'invite de commandes) :
ex: nom_du_batch c :\documents..\ (dans ce cas %0 vaut nom_du_batch,
%1 vaut c :\documents....\) %2 n'existe pas (plus) !
Ta façon de procéder laisserait présumer que %1 %2 et %3 sont systématiquement codés à l'appel, avant
même de connaître le choix 1, 2, ou 3, qui va être effectué.
Il y a au moins cela à corriger, je pense. Autrement je l'ai fait tourner un peu en affichage (choix 1), ça donne un résultat qui peut être considéré comme satisfaisant compte tenu de l'état d'avancement (non finalisé) du travail.