批与IF ELSE和GOTO
问题描述:
所以,我在批处理脚本:)初学者批与IF ELSE和GOTO
这里是我的代码:
@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. 我尝试了几件事情与“其他”和转到错误,但没有工作...
有人可以帮忙吗? 在此先感谢!
答
您已经有处理这一代码:
: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..3
以外的值是刚刚经历下降到,做一个选项的代码。即使您取消注释该代码,它也会打印错误消息并立即返回至
:ch
标签,清除屏幕。
第一个修复方法很简单,只需从这三行中删除rem
关键字即可。
对于第二个问题,您可以使用两种方法之一(至少)。
第一种选择是在goto :ch
之前立即插入pause
命令。这会在屏幕上留下错误信息,直到您输入内容。
第二个选项是而不是清除屏幕,而是只是重新打印菜单。这可以通过在:ch
标签之前将cls
移动到来完成。
(一)道歉对我的残暴法国,特别是(但不一定限于)缺乏口音:-)
只是如果“%喜爱将%”后'插入代码=='3 'goto:mmc',像'echo wrong input'和'goto:ch' – Stephan
注意:你的'''语法和'if'一起工作,但是你最好使用'''来防止各种语法错误。对[choice](https://ss64.com/nt/choice.html)命令感兴趣(这是它自己的错误处理,只允许定义的键) – Stephan
您已经在交易的三条线的前面插入了'rem'语句与“其他”情况,**但**,因为你hav e goto ch',下一个命令是'cls',它将删除该消息。在goto ch之前插入'PAUSE'语句。 – Magoo