当文件已存在时,如何在批处理文件的开头退出批处理?

时间:2016-05-02 03:34:15

标签: batch-file if-statement cmd

我有一个批处理文件,我的目标是只使用一次。在进一步执行时,此批处理文件应该什么也不做。为了解决这个问题,我决定使用If Exist来检查批处理脚本末尾创建的文件。 所以在一开始我有这个(我去了正确的目录):

If Exist "file.txt" (
goto exit
)

我在文件末尾设置了exit标记。

我们将赞赏其他方法,但我更倾向于解决这个问题。

2 个答案:

答案 0 :(得分:5)

goto manual说:

  

指示批处理程序跳转到标记的行。

     

语法         GOTO标签

我认为标签(我不会使用术语标记)名称不应该是exit,因为存在具有相同名称的Windows命令。将标签更改为

:exitprocess

并做

if exist "file.txt" goto exitprocess

但是,如果您希望使用exit作为标签,则解决方法是使用

if exist "file.txt" goto :exit

注意冒号,这是告诉goto找到名为exit的标签

礼貌:@somethingdark解决方法。

答案 1 :(得分:5)

Microsoft向GOTO解释了使用

的可能性
goto :EOF

退出批处理文件或批处理子程序的处理,其中标签 EOF (文件结束)是预定义的,不得在批处理文件中明确定义。

退出处理批处理文件或批处理子程序的另一种方法是使用带有参数/B的命令EXIT,即

exit /B

这只退出批处理而不是整个命令过程,这对于使用 EXIT 退出批处理子程序或从另一个批处理文件调用批处理文件有所不同。

所以它可以用于此任务

if exist "file.txt" goto :EOF

if exist "file.txt" exit /B

两行都导致退出当前批处理并返回到调用进程,这是直接调用批处理文件时的命令进程,导致退出命令进程。