Tester le passage d'un parametre en batch

Bonjour les clubistes,

Je connaissais les commandes dos avant windows XP, apparemment ça change à partir de XP.

Je voudrais tester le passage d’un parametre dans l’execution d’un batch.
Exemple :
Non du batch : test.bat

Dans une fenêtre dos je peux entrer : test ou test 2014_08_09
dans le batch test.bat je veux tester que j’ai bien passer une date, sinon c’est une erreur que je traiterai.

Volià ce que j’ai fait :
If %1==%1 Goto :OK
pause je n’ai pas de date
goto :fin
:OK
pause j’ai une date
goto :fin
:fin

Si je tape test.bat 2014_08_09 ça fonctionne
Si je tape test.bat seul, j’ai le message d’erreur : “:OK était innatendu” (sans les guillemets)

Je ne comprend pas pourquoi.

Si vous avez une explication, je suis preneur.
Merci d’avance.
Edité le 09/08/2014 à 21:08

J’ai résolu le problème enfaisant le test inverse :
If “%1”=="" Goto :mauvais
goto :bon
:mauvais
pause je n’ai pas de date
goto :fin
:bon
pause j’ai une date
goto :fin
:fin

Si vous avez mieux, je suis preneur…
Edité le 09/08/2014 à 22:00

Bonjour,

Un chouia plus court, mais rien de transcendantal… :frowning:

Merci pour ta réponse.

Je vais adopter cette façon de faire.

vieux sujet mais tu peux boucler sur la vérification de la saisie avec une petite expression régulière qui test que ta date est sous le format attendue

@echo off
set $date=%1%
set $regex=^^[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]^\^>

:LoopDate
echo.%$date% | findstr /r "%$regex%" > nul 2>&1 || (
	echo.je n'ai pas de date
	SET /P $date="Donnez moi une date:"
	GOTO LoopDate
)

echo.j'ai une date: %$date%

edition suite au bug du forum qui supprime un backslash
Edité le 09/11/2014 à 20:01

Merci nebuchadnezzar
J’ai essayer de tester ton code.
Je bute sur la première ligne : set $date=%1%
Il me répond : La syntaxe de la commande est incorrecte.

Salut,

Ce code fonctionne tel quel sur mon Windows 7. Tu es sur quelle version de windows? XP?
tu as copié collé ce code dans un fichier .bat ou tu essayes de le lancer en ligne de commande?


PS: essaye de remplacer le nom des variables en enlevant le signe $
@echo off
set vdate=%1%
set vregex=^^[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]^^>

:LoopDate
echo.%vdate% | findstr /r "%vregex%" > nul 2>&1 || (
	echo.je n'ai pas de date
	SET /P vdate="Donnez moi une date:"
	GOTO LoopDate
)

echo.j'ai une date: %vdate%

Edité le 09/11/2014 à 19:14

Je suis sous XP
J’ai copie-collé le code dans un .bat
Je le lance en ligne de commande
J’ai essayé sans le $
j’ai essayé aussi avec des “”
Pas mieux.

OK testé sur WIN XP et ça passe pas au niveau de la ligne
set vregex=^^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]^^>
Il doit y avoir une différence dans le caractère de protection ^

tu peux essayer ça qui fonctionne mais qui est un peu moins fiable dans la regex

@echo off
set vdate=%1%
set vregex=[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]

:LoopDate
echo.%vdate% | findstr /r "%vregex%" > nul 2>&1 || (
	echo.je n'ai pas de date
	SET /P vdate="Donnez moi une date:"
	GOTO LoopDate
)

echo.j'ai une date: %vdate%

Edité le 09/11/2014 à 19:34

ah mince y’a un bug dans la balise CODE de clubic qui supprime un caractère. Ma première version fonctionnait mais il a supprimé le backslash entre les deux ^^ à la fin de la variable vregex
set vregex=^^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]^backslash^>

devient

set vregex=^^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]^^>


[Photo supprimée]

Comme le forum est pourrit voici le code final qui marche comme il faut

@echo off
set $date=%1%
set $regex=^^[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9]^\^>

:LoopDate
echo.%$date% | findstr /r "%$regex%" > nul 2>&1 || (
	echo.je n'ai pas de date
	SET /P $date="Donnez moi une date:"
	GOTO LoopDate
)

echo.j'ai une date: %$date%

Si besoin, utilise pastebin (et oui, je le sais, j’ai prévenu mais rien eu :/)

Ok ça marche. :super: merci
Demain j’intègre ça à mon .Bat


[quote="Sans-Nom"] .....(et oui, je le sais, j'ai prévenu mais rien eu :/) [/quote] Comprend pas cette phrase.... :etonne2:
[quote="Nostradamus"] Ok ça marche. :super: merci Demain j'intègre ça à mon .Bat
[quote="Sans-Nom"] .....(et oui, je le sais, j'ai prévenu mais rien eu :/) [/quote] Comprends pas cette phrase.... :etonne2: [/quote]

Comprend pas cette phrase… :etonne2:
[/quote]

Sans-Nom s’adressait à moi pour me dire qu’il avait prévenu l’équipe de clubic que leur forum est buggé car il fait disparaitre un antislash quand il est pas précedé d’un autre antislash
un antislash:
un antislash précédé d’un autre antislah:
Mais l’équipe de Clubic s’en fiche a priori de fournir des fonctionnalités buggés
Et donc Sans-nom m’expliquait d’utiliser le service en ligne patesbin pour afficher mon code dans le forum sans erreur
Edité le 09/11/2014 à 21:26

Voilà :slight_smile:
Bon après, le point est pris en compte mais ce n’est pas la priorité. Et on fait avec, d’où l’utilisation de services externes.

ça n’offre pas que ça, vu qu’on peut aussi éditer le code en cas d’erreurs - c’est donc un peu plus collaboratif.

:jap: