我需要使用批处理文件检查文件是否已创建并锁定, 如果文件被锁定,程序应该等待并定期检查文件是否从锁定状态释放,当它解锁时程序应该退出。
我是编写批处理文件的新手(今天开始)
这就是我的尝试:
@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
答案 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)?。