【发布时间】:2010-06-22 08:50:45
【问题描述】:
我尝试在 .cmd 文件中创建一个循环。
如果 test.txt 不存在,那么我将终止 cmd 进程。
@echo off
if not exists test.txt goto exit
但是这段代码不起作用,我不知道如何每 2 秒循环一次。
感谢您的帮助。
【问题讨论】:
我尝试在 .cmd 文件中创建一个循环。
如果 test.txt 不存在,那么我将终止 cmd 进程。
@echo off
if not exists test.txt goto exit
但是这段代码不起作用,我不知道如何每 2 秒循环一次。
感谢您的帮助。
【问题讨论】:
该命令称为exist,而不是存在:
if not exist test.txt goto :exit
echo file exists
:exit
关于你的循环:
我不是 100% 确定,但我认为 Windows 中没有 sleep 或 wait 命令。你可以用谷歌搜索 sleep 来找到一些免费软件。另一种可能性是使用 ping:
ping localhost -n 3 >NUL
编辑:
Windows Server 2003 Resource Kit Tools 包含一个睡眠。
更多信息请见here
【讨论】:
如果您需要等待几秒钟,请使用标准 CHOICE 命令。此示例代码每两秒检查一次文件是否存在。如果文件存在则循环结束:
@ECHO OFF
:CHECKANDWAITLABEL
IF EXIST myfile.txt GOTO ENDLABEL
choice /C YN /N /T 2 /D Y /M "waiting two seconds..."
GOTO CHECKANDWAITLABEL
:ENDLABEL
【讨论】:
timeout 命令。但choice 和timeout 并非在所有Windows 版本中都可用。 Ping 是。
exit 是 DOS/命令提示符中的关键字 - 这就是 goto exit 的原因 不工作。
如果不存在“文件名”退出,则使用退出该批处理文件。 如果您想要退出批处理文件,那很好。
如果您想在退出前执行一些其他指令,请将标签更改为 :notfound 之类的内容,然后您可以转到 notfound 并在退出前执行一些其他指令。
(这只是对其中一个示例的说明)
【讨论】:
使用以下内容:
if not exist "file name" goto exit
结果:
The system cannot find the batch label specified - exit
但是使用不带“goto”的相同命令可以工作,如下所示:
if not exist "file name" exit
【讨论】: