Script de commandes sous Windows

[Résolu/Fermé]
Signaler
Messages postés
3
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
29 octobre 2013
-
Messages postés
4270
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
-
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

1 réponse

Messages postés
4270
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
214
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
Messages postés
3
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
29 octobre 2013

Merci pour cette réponse, mais qu'est ce que tu entends par "voir dynamiquement les paramètres" ?
Le problème de ta solution c'est que je ne sais pas à l'avance combien de paramètres il sera mis, or si j'ai bien compris dans ce que tu as écrit il y a 3 paramètres qui seront testés
Messages postés
4270
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
214
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)
Messages postés
3
Date d'inscription
mardi 29 octobre 2013
Statut
Membre
Dernière intervention
29 octobre 2013

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
Messages postés
4270
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 mars 2021
214
ok je me demandais justement, je n'avais pas pensé qu'il s'agissait du curseur ^^