Eli*_*son 3 cmd if-statement batch-file
我有一个批处理文件,我的目标是只使用一次.在进一步执行时,此批处理文件应该什么也不做.为了解决这个任务,我决定用来If Exist检查批处理脚本末尾创建的文件.所以在一开始我有这个(我去了正确的目录):
If Exist "file.txt" (
goto exit
)
Run Code Online (Sandbox Code Playgroud)
我exit在文件的末尾设置了一个标记.
我会赞赏替代方法,但我更喜欢这个问题的解决方案.
goto 手册说:
指示批处理程序跳转到标记的行.
语法GOTO标签
我猜标签(我不会使用术语标记)名称不应该是exit具有相同名称的Windows命令.将标签更改为
:exitprocess
Run Code Online (Sandbox Code Playgroud)
并做
if exist "file.txt" goto exitprocess
Run Code Online (Sandbox Code Playgroud)
但是,如果您希望使用exit变通方法作为标签使用
if exist "file.txt" goto :exit
Run Code Online (Sandbox Code Playgroud)
记住冒号,这是告诉goto找到名为的标签exit
礼貌:@somethingdark的解决方法.
微软向GOTO解释了使用的可能性
goto :EOF
Run Code Online (Sandbox Code Playgroud)
退出批处理文件或批处理子程序的处理,其中标签EOF(文件结束)是预定义的,不得在批处理文件中明确定义.
退出批处理文件或批处理子程序的处理的另一种方法是使用命令EXIT with parameter /B,即
exit /B
Run Code Online (Sandbox Code Playgroud)
这仅退出批处理而不是整个命令过程,这使得使用EXIT退出批处理子例程或从另一个批处理文件调用批处理文件有所不同.
所以它也可以用于这个任务
if exist "file.txt" goto :EOF
Run Code Online (Sandbox Code Playgroud)
要么
if exist "file.txt" exit /B
Run Code Online (Sandbox Code Playgroud)
这两行都导致退出当前批处理并返回到调用进程,这是直接调用批处理文件时的命令进程,导致退出命令进程.