2016-10-14 128 views
0

我正在尝试为我的shell创建一个.bat文件:易于访问的启动。 .bat不接受其他术语。我能做些什么来使我的代码工作?如果没有其他的替代方案,是否有一个不平等的运营商?批处理文件具有If-Else语句的替代方法?

代码:

@echo off 
cls 
echo Desktop Startup Initiated... 
cd "C:\Users\User1\Desktop 
goto start 


:start 
pause 
set /p x=Please select an option.  1.Heavy start  2.Light start    Enter Here: 

if %x% == 1 (goto heavy) 
if %x% == 2 (goto light) 
else (echo Invalid. 
pause 
goto :start) 

:light 
start Slack.lnk 
start Outlook.lnk 
exit 

:heavy 
start chrome.exe 
start Review.txt 
start Notes.txt 
start Slack.lnk 
start Outlook.lnk 
exit 

如果没有别的选择,我可以不,等于在它的位置参数重定向到开始。

+3

(这个30秒内没有响应后选择光)'else'是完全有效的,它只是需要在同一行的')​​'从'if' – SomethingDark

+0

你不实际需要'else'。只要让它落到下一行。另外,如果你在'start Notes.txt'后面加':light'作为行,你可以删除当前的':light'部分。 –

+1

打开命令提示符窗口,输入'if /?'并仔细阅读帮助文本;你会发现'if' /'else'的语法和'=='以外的所有可用的比较运算符,比如'EQU','NEQ',例如... – aschipfl

回答

1

使用CHOICE代替尝试,那么你可以设置默认超时选项。

@ECHO OFF 
ECHO Desktop Startup Initiated... 
PUSHD "%USERPROFILE%\Desktop" 
CHOICE /C LH /T 30 /D L /M "Please select Light or Heavy start " 
IF ERRORLEVEL 2 GOTO :Heavy 
START Slack.lnk 
START Outlook.lnk 
EXIT/B 
:Heavy 
START chrome.exe 
START Review.txt 
START Notes.txt 
START Slack.lnk 
START Outlook.lnk 
1

为什么使用其他? 从逻辑上讲,如果其不等于1或2将到无效的声明

if %x% == 1 goto heavy 
if %x% == 2 goto light 
echo Invalid. 
pause 
goto :start 

如果你真的想使用else

if %x% == 1 goto heavy 
if %x% == 2 (goto light 
    ) else (
    echo Invalid. 
    pause 
    goto :start 
    )