2015-10-20 25 views
0

我一直在写一些批处理文件,现在一天。我是初学者!所以我做了一个自定义批处理,通过输入设置名称启动它,但是。我在创建这个自定义文件时遇到了一些问题。如果条件不相同批处理文件崩溃

@echo off 
set /p lnk="Setup Name = " 
if "%lnk%"=="install.itunes.x64.windows" goto itunes 
:itunes 
start=(path)(setup.exe)..... 
cls 

但是,如果用户输入“itues或‘installitunes’或‘KJEWBFciou’任何不配衬我的自定义命令,我想在这种情况下一个错误弹出。 我可以做什么? 和不问把"if not "%lnk%"我已经尝试扶平:0 因为我有很多设定iTunes一样,如果投入将不等于自定义命令它启动下一个安装 请帮我

请igonre我的错误,我只有在这里不是批处理文件。 in line 2%lnk%,lnk and line 3“%lnk “” %LNK%”

+1

来自SET/P命令删除百分比符号。 – Squashman

+2

''%lnk%''也应该是''%lnk%''' – SomethingDark

+0

'if'命令后,你无意中掉进了':itunes'节,所以你需要一个'goto:EOF'或'goto': 'if'后的somewhere_else' ... – aschipfl

回答

0

好了,所以..

1 @echo off 
2 set /p %lnk%="Setup Name = " 
3 if "%lnk%=="install.itunes.x64.windows" goto itunes 
4 :itunes 
5 start=(path)(setup.exe)..... 
6 cls 

一些错误,但你靠近。

在第2行,你用:

set /p %lnk%=="Setup Name = " goto itunes 

当设置你不能使用%%它周围的变量,但比较多数民众赞成时仅使用,因为在创建变量时,计算机将取代[ set/p%lnk%=]与[set/p =],这是无效的语法。

在第3行:

if "%lnk%=="install.itunes.x64.windows" goto itunes 

你永远不会关闭在 '==' 比较左侧的报价。请注意,您还可以使用[if%val1%equ%val2%]获得相同的结果,这对您使用其他比较标签时可以提供帮助。

虽然[goto itunes]可以正常工作,但它是使用[goto:itunes]的好习惯,如果您想将所有代码放在一起,您可以创建一个脚注代码块,如:

if %val1% equ %val2% (
rem do stuff here 
) 

做笔记,如果你要么需要一个任务,如果变量匹配运行,如果不尝试下一场比赛,你可以使用这些多。否则,你可以使用:

if %val1% equ %val2% (
    rem do stuff here 
) else (
    rem do other stuff here 
) 

在回答您的问题就可以推出下一个命令,那是因为在第3行,你检查变量的字符串相匹配,但如果它不批跳过它,下次运行行,这是你的:itunes标签。总之,在修复[start =(path)(setup.exe).....]按需启动后,这应该会更好。

@echo off && color f0 && title Itunes 

:top 
cls 
set /p lnk="Setup Name = " 

if "%lnk%"=="install.itunes.x64.windows" (
    start=(path)(setup.exe)..... 
    cls 
) 
cls 
echo "%lnk%" was not matched to any choices... 
pause 
goto :top 

:: _Arescet