2017-10-10 3 views
0

Alors, je suis un débutant dans les scripts batch :)Lot avec IF ELSE et GOTO

Voici mon code:

@echo. 
@echo off 

Set USER_ADM=LocAdmin 
Set pwd=%cd% 
Set choix=%1 

@echo. 

:ch 
cls 
@echo. 
@echo Choisis ce que tu veux ouvrir 
@echo. 
@echo 1. CMD 
@echo 2. Regedit 
@echo 3. MMC 
@echo. 
Set /P choix=Choix du programme a demarrer en %USER_ADM% (1-3) : 
@echo off 

if '%choix%' =='1' goto :cmd 
if '%choix%'=='2' goto :regedit 
if '%choix%'=='3' goto :mmc 

REM :error 
REM @echo %choix% N'est pas un chiffre entre 1 et 3 ! 
REM goto ch 

:cmd 
runas /user:%USER_ADM% C:\Windows\SysWOW64\cmd.exe 
goto ch 

:regedit 
runas /user:%USER_ADM% C:\Windows\regedit.exe 
goto ch 

:mmc 
runas /user:%USER_ADM% "mmc %pwd%\MMC\Mymmc.msc" 
goto ch 

@pause > nul 

Je voudrais avoir un message si j'entre autre chose que 1 , 2 ou 3. J'ai essayé plusieurs choses avec "else" et goto error mais rien n'a fonctionné ...

Quelqu'un peut-il aider? Merci d'avance!

+2

il suffit d'insérer le code après 'si '%% choix' == '3 'goto: mmc', comme 'echo wrong input' et' goto: ch' – Stephan

+2

Note: votre syntaxe '' 'fonctionne avec' if', mais vous devriez utiliser '' 'pour éviter diverses erreurs de syntaxe. intéressé par la commande [choice] (https://ss64.com/nt/choice.html) (qui fait son propre errorhandling, ne permettant que les clés définies) – Stephan

+0

Vous avez inséré des instructions 'rem' devant les trois lignes qui traitent avec la situation "autre chose", ** MAIS ** puisque vous avez e a 'goto ch', la commande suivante est' cls' qui supprimera le message. Insérer une instruction 'PAUSE' avant le' goto ch'. – Magoo

Répondre

0

Vous avez du code déjà pour traiter ceci:

:ch 
cls 
@echo. 
@echo Choisis ce que tu veux ouvrir 
@echo Autres trucs francais je ne pouvais pas etre derange tapant (a) 

: 

if '%choix%' =='1' goto :cmd 
if '%choix%'=='2' goto :regedit 
if '%choix%'=='3' goto :mmc 

REM :error 
REM @echo %choix% N'est pas un chiffre entre 1 et 3 ! 
REM goto ch 

:cmd 

Mais il y a deux problèmes.

  1. Le code est commenté, ce qui signifie qu'une valeur autre que 1..3 va tout simplement tomber à travers le code qui fait la première option.

  2. Même si vous décommentez ce code, il affichera le message d'erreur et retournera immédiatement à l'étiquette :ch, effaçant ainsi l'écran.

Le correctif pour le premier est facile, il suffit d'enlever les mots-clés rem de ces trois lignes.

Pour le deuxième problème, vous pouvez choisir l'une des deux méthodes (au moins).

La première option consiste à insérer une commande pause immédiatement avant goto :ch. Cela laissera le message d'erreur sur l'écran jusqu'à ce que vous entrez quelque chose.

La deuxième option est et non effacer l'écran mais réimprimer simplement le menu. Cela peut être fait en déplaçant le cls à avant le le label :ch.


(a) Toutes mes excuses pour mon atroce français, en particulier (mais pas nécessairement limité à) le manque d'accents :-)