我需要使用批处理文件检查文件是否被创建和锁定,如果文件被锁定,程序应该等待并定期检查文件是否从锁定中释放,当它被解锁时程序应该退出。
我对编写批处理文件很陌生(从今天开始)
这是我尝试过的:
@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
我需要使用批处理文件检查文件是否被创建和锁定,如果文件被锁定,程序应该等待并定期检查文件是否从锁定中释放,当它被解锁时程序应该退出。
我对编写批处理文件很陌生(从今天开始)
这是我尝试过的:
@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
你很接近:) 但是你不能使用 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 资源。
如果给定的文件或目录被锁定(由任何进程使用),请参阅如何签入命令行?有关上述工作原理的更多信息。