如果条件和批处理文件中的循环

时间:2013-10-22 16:34:31

标签: batch-file

我需要使用批处理文件检查文件是否已创建并锁定, 如果文件被锁定,程序应该等待并定期检查文件是否从锁定状态释放,当它解锁时程序应该退出。

我是编写批处理文件的新手(今天开始)

这就是我的尝试:

@echo off
:loop
if (2<nul (>>test.txt echo off))(
    goto END
)
else (goto MESSAGE)
:MESSAGE
echo trying to access file
goto loop
:END
pause

1 个答案:

答案 0 :(得分:2)

你很接近:)但是你不能使用IF来直接测试命令是否成功。请改用||条件运算符。

假设您的意思是Windows,而不是DOS:

@echo off
:loop
2>nul (
  (call ) >>test.txt
) || (
  echo Trying to access file
  timeout /nobreak 1 >nul
  goto loop
)

(call )只是一种非常有效的方法来执行始终返回成功的无操作。

TIMEOUT引入1秒延迟以防止循环占用CPU资源。

有关上述工作原理的详情,请参阅How to check in command-line if a given file or directory is locked (used by any process)?