如果找到程序,则批量转到循环

时间:2016-01-25 16:30:51

标签: loops batch-file goto

对于我的生活,我无法弄清楚为什么我能用这个简单的批处理脚本使用GOTO来回应测试退出。路径存在。这应该非常简单,但缺少一些东西。如果我运行这个脚本,我应该回复"测试退出",但我得到"测试安装"即使路径存在。任何帮助?

@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

2 个答案:

答案 0 :(得分:1)

)ELSE{
GOTO TestInstall
}

咦?为什么使用不同的parantheses /括号?批处理对空间非常挑剔 - 在else之前和之后必须有一个:

) ELSE (
GOTO TestInstall
)

答案 1 :(得分: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{这是不正确的,必须翻译成) ELSE (并用括号关闭,而不是大括号。也忘了放空格。

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

此外,在您的脚本开头,由于:install标签位于顶部,因此在进行任何检查之前,它会运行install部分。

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