Loops 如果找到程序,则批处理转到循环

Loops 如果找到程序,则批处理转到循环,loops,batch-file,goto,Loops,Batch File,Goto,就我的一生而言,我不明白为什么我不能使用GOTO使用这个简单的批处理脚本来回显测试退出。路径存在。这应该很简单,但缺少一些东西。如果我运行这个脚本,我应该回显“testexit”,但是即使路径存在,我也会得到“testinstall”。有什么帮助吗 @echo off :TestInstall Echo Test Install pause IF EXIST "C:\Program Files\Microsoft Office\root\Office16\Excel.exe" (

就我的一生而言,我不明白为什么我不能使用GOTO使用这个简单的批处理脚本来回显测试退出。路径存在。这应该很简单,但缺少一些东西。如果我运行这个脚本,我应该回显“testexit”,但是即使路径存在,我也会得到“testinstall”。有什么帮助吗

@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
嗯?为什么使用不同的括号/括号?此外,batch对空格也相当挑剔-在
之前和之后必须有一个空格,否则

) ELSE (
GOTO TestInstall
)
嗯?为什么使用不同的括号/括号?此外,batch对空格也相当挑剔-在
之前和之后必须有一个空格,否则

) ELSE (
GOTO TestInstall
)

你想要这样的东西:

@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(
),并用括号而不是大括号来结束。另外,别忘了放空格

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

此外,在脚本开始时,由于
:install
标签位于顶部,因此它将在执行任何检查之前运行
install
部分


如果不希望发生这种情况,则应在if语句下移动安装部件。

您希望这样:

@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(
),并用括号而不是大括号来结束。另外,别忘了放空格

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

此外,在脚本开始时,由于
:install
标签位于顶部,因此它将在执行任何检查之前运行
install
部分


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

代表我出错。没有看到不同的括号代表我出错。没有看到不同的括号是什么使您认为可以将括号与大括号混合匹配?如果您阅读
if
命令的帮助,它将显示当您需要使用
ELSE
子句时,语法是如何使用的。@Squashman nothing。这是我的一个错误,是什么让您认为可以将括号与大括号混合匹配?如果您阅读
If
命令的帮助,它将准确地向您显示当您需要使用
ELSE
子句时语法是如何使用的e、 @Squashman没什么。这是我的错误