Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

batch

1 réponse
Avatar
HeLioZz
j suis sur la conception d un batch et je n arrive pas a faire fonctionner
cette commande :

:reviens2

set /p test=veuillez indiquer le chemin des fichiers a archiver :

if [%test%] ==[] echo Paramètres de commande manquants&goto reviens2
CHOICE /C:rc "tapez R pour resaisir ou C pour arreter la saisie."
If ERRORLEVEL==1 goto reviens2
If ERRORLEVEL==2 goto continu

:continu


comment faire????

1 réponse

Avatar
Jean-Claude BELLAMY
Dans le message news: ,
HeLioZz s'est ainsi exprimé:

j suis sur la conception d un batch et je n arrive pas a faire
fonctionner cette commande :

reviens2



set /p test=veuillez indiquer le chemin des fichiers a archiver :

if [%test%] ==[] echo Paramètres de commande manquants&goto reviens2
CHOICE /C:rc "tapez R pour resaisir ou C pour arreter la saisie."
If ERRORLEVEL==1 goto reviens2
If ERRORLEVEL==2 goto continu

continu




comment faire????



Utiliser la bonne syntaxe !

L'utilisation de ERRORLEVEL est la suivante :
(extrait de laide en ligne de IF !!!)

IF ERRORLEVEL nombre commande

Condition vraie si le dernier programme exécuté a
retourné un code sortie supérieur/égal au nombre donné.

On peut utiliser ERRORLEVEL sous forme de chaine, et dans ce cas la commande
devient :
IF %ERRORLEVEL%==nombre commande


Et quand tu écris en 1ère ligne (après le choice) :
If ERRORLEVEL==1 goto reviens2
en réalité
If ERRORLEVEL 1 goto reviens2

c'est ... toujour vrai !
Quel que soit la lettre tapée
Puisque cela signifie "Si ERRORLEVEL est supérieur ou égal à 1" aller en
"reviens2"
Si on tape R : -> ERRORLEVEL vaut 1
Si on tape C : -> ERRORLEVEL vaut 2
Donc Si on tape R ou C -> ERRORLEVEL est supérieur ou égal à 1 dans les DEUX
cas !

Personnellement, je déteste cette utilisation de ERRORLEVEL, car au bout de
20 ans de commandes (mes 1ers batchs pour PC datent de 1985), je n'ai
toujours pas réussi à me souvenir sans faille dans quel sens le test
fonctionne !

Donc je préfère utiliser SET /P, c'est beaucoup plus sûr et rationnel :

...
:boucle
Set /P car=tapez R pour resaisir ou C pour arreter la saisie
for %%F in (R C) do if /i %%F==%car% goto Etiq%%F
goto boucle
:EtiqR
goto reviens2
:EtiqC
goto continu
....


NB: le test "if /i ..." permet de s'affranchir de la casse
(majuscule/minuscule)

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
*