如果条件不相等,批处理文件崩溃

时间:2015-10-20 15:55:05

标签: batch-file

我现在一直在写一些批处理文件。我是初学者!所以我做了一个自定义批处理,通过输入设置名称,它启动了它。我在创建此自定义文件时遇到了一些问题。

    @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我的错误我只是在这里,而不是在批处理文件中。 在线2%lnk%,lnk 和第3行"%lnk" "%LNK%"

1 个答案:

答案 0 :(得分: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