Script de commandes sous Windows
Résolu
Bouuuhx
Messages postés
3
Statut
Membre
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je débute en informatique, et je dois écrire une commande qui calcule la variable d'environnement MAXI et affiche le maximum d'une liste d'entiers passée en paramètres (sachant que le nombre de paramètres n'est pas défini).
J'ai tenté d'écrire le script mais quand je l'exécute sur l'invite de commande, il est précisé que la syntaxe est incorrecte. Alors si quelqu'un pourrait m'aider à comprendre pourquoi et à me corriger ce serait vraiment sympa.
Voici ce que j'ai écrit sous Notepad++ :
@echo off
if "%1"==" " goto Usage
if "%1"=="/?" goto Usage
set MAXI=0
:tantque
if "%1"==" " goto ftq
if /I %1% GTR %MAXI% set MAXI=%1
shift
goto tantque
:ftq
echo Le maximum est : %MAXI%
goto fin
:Usage
echo Usage : Maximum entiers exemple : Maximum 4 5 3
:fin
Merci d'avance à ceux ou celles qui prendront de leur temps pour me répondre
Je débute en informatique, et je dois écrire une commande qui calcule la variable d'environnement MAXI et affiche le maximum d'une liste d'entiers passée en paramètres (sachant que le nombre de paramètres n'est pas défini).
J'ai tenté d'écrire le script mais quand je l'exécute sur l'invite de commande, il est précisé que la syntaxe est incorrecte. Alors si quelqu'un pourrait m'aider à comprendre pourquoi et à me corriger ce serait vraiment sympa.
Voici ce que j'ai écrit sous Notepad++ :
@echo off
if "%1"==" " goto Usage
if "%1"=="/?" goto Usage
set MAXI=0
:tantque
if "%1"==" " goto ftq
if /I %1% GTR %MAXI% set MAXI=%1
shift
goto tantque
:ftq
echo Le maximum est : %MAXI%
goto fin
:Usage
echo Usage : Maximum entiers exemple : Maximum 4 5 3
:fin
Merci d'avance à ceux ou celles qui prendront de leur temps pour me répondre
1 réponse
-
salut,
la première chose c'est que tu ne test que %1, soit le premier paramètre. Je ne sais pas comment voir dynamiquement les paramètres donc je pense que tu as à faire 3 tests.
soit :
@echo off
if "%1"==" " goto Usage
if "%1"=="/?" goto Usage
set MAXI=0
if "%1"==" " goto ftq
if /I %1 GTR %MAXI% set MAXI=%1
if /I %2 GTR %MAXI% set MAXI=%2
if /I %3 GTR %MAXI% set MAXI=%3
goto ftq
shift
:ftq
echo Le maximum est : %MAXI%
goto fin
:Usage
echo Usage : Maximum entiers exemple : Maximum 4 5 3
:fin
naga-
-
oui c'est bien ce que j'ai dis : voir dynamiquement les paramètres signifie que l'utilisateur peu rentrer n paramètres et faire le traitement en fonction de ca. Le truc c'est donc qu'en bat, je n'ai pas trouvé de méthodes qui le permettent (et dans ton code tu ne testais que le %1 ce qui engendre une boucle infinie)
-
Oui mais la commande shift permet de transformer le paramètre 2 en paramètre 1 ainsi je teste les paramètres jusqu'à ce qu'il y en ai un qui soit vide (if "%1"=="" goto ftq renvoie à la fin de l'itération).
Du coup j'ai réussi à me corriger mon script afin qu'il fonctionne avec le code suivant :
@echo off
if "%1"=="" (
echo Il n'y a aucun parametre !
goto Usage )
if "%1"=="/?" goto Usage
set MAXI=%1
:tantque
if "%1"=="" goto ftq
if /I %1 GTR %MAXI% ( set MAXI=%1 )
shift
goto tantque
:ftq
echo Le maximum est : %MAXI%
goto fin
:Usage
echo Usage : Maximum insererEntiers Exemple : Maximum 4 1 7 3
:fin
En tout cas merci d'avoir pris le temps de m'aider -
-