2016-01-25 22 views
0

对于我的生活,我无法弄清楚为什么我不能用这个简单的批处理脚本使用GOTO回显测试退出。路径存在。这应该非常简单,但缺少一些东西。如果我运行这个脚本,我应该回显“Test Exit”,但即使路径存在,我也会得到“Test Install”。任何帮助?batch-Goto Loop如果发现程序

@echo off 

:TestInstall 
Echo Test Install 

pause 

IF EXIST "C:\Program Files\Microsoft Office\root\Office16\Excel.exe" (
    GOTO TestExit 
    )ELSE{ 
    GOTO TestInstall 
    } 

:TestExit 
Echo Test Exit 

pause 
+1

是什么让你觉得你可以混合使用大括号和大括号?如果您阅读“IF”命令的帮助,它将向您显示在需要使用ELSE子句时如何使用语法。 – Squashman

+0

@Squashman什么都没有。这是我的错误 –

回答

1
)ELSE{ 
GOTO TestInstall 
} 

咦?为什么你使用不同的parantheses /括号?另外一批是相当挑剔的空间 - 有必须一前else后:

) ELSE (
GOTO TestInstall 
) 
+0

我的错误。没有看到不同的括号 –

1

你想是这样的:

@echo off 

:install 
echo install 
pause 

IF EXIST "C:\Program Files\Microsoft Office\root\Office16\Excel.exe" (
    goto install 
) ELSE (
    goto exit 
) 

:exit 
echo exit 
pause 

那么,你必须)ELSE{这是不正确的,它必须被翻译为,并用圆括号括起来而不是大括号。还要忘记放置空格。

请注意,如果文件不存在,您将在:installgoto install指令之间运行一个无限循环。

此外,在脚本的开始处,因为:install标签位于顶部,所以在执行任何检查之前它将运行install部件。

如果您不希望发生这种情况,您应该将安装部分移到if语句下。