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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 *
Dans le message news:DA3710E0-7BB9-49B0-9A1D-5AF75EE87799@microsoft.com ,
HeLioZz <HeLioZz@discussions.microsoft.com> 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
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
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 *