J'ai des difficultés à comprendre comment le script Windows .bat est imbriqué dans Windows. Ce que je souhaite réaliser est le suivant. Je vais passer deux paramètres à un fichier bat
Si le premier paramètre = 0 et si le deuxième paramètre = 0 exécuter proc1
Si le premier paramètre = 0 et seconde non 0 exécute proc2
Si le premier paramètre n'est pas 0 Run Pro 3
Le squelette du code que j'ai écrit jusqu'à présent est
@echo off
IF %1% == 0 (
IF %2% == 0 ( goto proc1
) ELSE ( goto proc2
)
ELSE ( goto proc3
)
:proc1
echo in Proc1 0 0
pause
exit
:proc2
echo in Proc2 0 N0
pause
exit
:proc3
echo in Proc3 N0 0
pause
exit
La question est que cela fonctionne bien pour les deux premières conditions, mais lorsque le premier paramètre n'est pas nul est toujours chuté à PROC1, alors que prévu est PROC3. Qu'est-ce que j'oublie ici? Le script ne donne aucune erreur sauf si les paramètres sont omis en premier lieu.
Le ==
L'opérateur de comparaison entraîne toujours une chaîne Comparaison.
Vous devez utiliser EQU
plutôt pour effectuer une comparaison numérique numérique .
Utilisez le fichier de commandes suivant:
@echo off
IF NOT %1% EQU 0 (
goto proc3
)
IF %2% EQU 0 (
goto proc1
)
goto proc2
:proc1
echo in Proc1 0 0
pause
goto :exit
:proc2
echo in Proc2 0 N0
pause
goto :exit
:proc3
echo in Proc3 N0 0
pause
:exit
Remarques:
goto :exits
s ont été ajoutés pour mettre fin aux PROC au lieu de exit
qui met fin à la coquille cmd
shell.Exemple de sortie:
F:\test>example 0 0
in Proc1 0 0
Press any key to continue . . .
F:\test>example 0 1
in Proc2 0 N0
Press any key to continue . . .
F:\test>example 1 0
in Proc3 N0 0
Press any key to continue . . .
F:\test>