2

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

我对编写批处理文件很陌生(从今天开始)

这是我尝试过的:

@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
4

1 回答 1

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 资源。

如果给定的文件或目录被锁定(由任何进程使用),请参阅如何签入命令行?有关上述工作原理的更多信息。

于 2013-10-22T16:52:28.680 回答