IF ELSE和GOTO

时间:2017-10-10 15:58:56

标签: batch-file scripting

所以,我是批处理脚本的初学者:)

这是我的代码:

@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

如果我输入的不是1,2或3,我想留言。 我用" else"尝试了几件事。并转到错误但没有任何效果...

有人可以帮忙吗? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

您已经拥有代码来处理此问题:

: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

但有两个问题。

  1. 代码已注释掉,这意味着除了1..3之外的其他值只会转到执行选项1的代码。

  2. 即使您取消注释该代码,它也会打印错误消息并立即返回:ch标签,清除屏幕。

  3. 第一个问题的解决方法很简单,只需从这三行中删除rem个关键字。

    对于第二个问题,你可以采用两种方式中的一种(至少)。

    第一个选项是在pause之前立即插入goto :ch命令。这将在屏幕上显示错误消息,直到您输入内容为止。

    第二个选项是清除屏幕,而只是重新打印菜单。这可以通过在cls标签之前将:ch移至来完成。

    (a)为我残暴的法语道歉,特别是(但不一定限于)缺乏口音: - )