如何确定文件是否正在使用?

时间:2009-11-03 22:59:07

标签: file vbscript batch-file

如何通过VBScript或批处理文件确定文件是否正在使用?它可以是一个单独的实用程序。

我看过Handle,但有时句柄不与文件名对齐,例如一些DLL,它不进行部分搜索(虽然我可以在其完整输出上使用一些文本处理工具来处理这方面的事情)。

3 个答案:

答案 0 :(得分:1)

您是否可以简单地尝试对文件执行任何操作,并在共享冲突失败时报告错误?

“请求宽恕比获得许可更容易。” - Grace Hopper

或者如果您想事先知道破坏性尝试是否会成功,您可以尝试做一些需要相同权限的非破坏性的事情。因此,如果您想知道是否可以覆盖文件,请尝试打开它以进行追加,但不要写任何内容。

无论你做什么,你都需要注意竞争条件 - 如果其他人在你的测试和实际操作之间打开文件会怎么样?

答案 1 :(得分:0)

试试这个:

@echo off
echo.N|copy /-y NUL "%~1">NUL
if not errorlevel 1 echo not in use
if errorlevel 1 echo in use

信用:DosTips.com :IsFileOpen

答案 2 :(得分:0)

我最终使用的是ListDLLs。运行“listdlls -d | find / c”pid“> temp.txt”然后测试temp.txt中是否有任何数据似乎确定文件是否成功使用。