我正在编写一个与锁定文件一起使用的Windows shell脚本。为了知道某个文件是否被锁定,我正在测试来自SysInternals的 Handle *实用程序,根据其文档:
«Handle是一个实用程序,显示有关打开句柄的信息 系统中的任何进程。你可以用它来查看那些程序 打开文件»
所以我通过创建一个简单的.txt
文件来尝试:
C:\Windows\system32>echo Foo >> Foo.txt
C:\Windows\system32>notepad Foo.txt
(记事本显示在屏幕上,其中包含一个名为Foo
的新文件。
C:\Windows\system32>handle Foo
Handle v3.51
Copyright (C) 1997-2013 Mark Russinovich
Sysinternals - www.sysinternals.com
No matching handles found.
这里发生了什么?我的文件应该是打开的,记事本应该有一个句柄,但是这一行:
handle -p notepad | grep "Foo"
没有结果。
如何使用句柄来了解我的Foo.txt
文件是否正在使用(已锁定)?
也许有人可以给我一些使用句柄的例子。
答案 0 :(得分:5)
记事本将文件读入内存并关闭手柄,这就是为什么你看不到它打开的原因。您可以在Process Monitor跟踪中看到该行为。
答案 1 :(得分:0)
起初我猜你忘记了命令行中的文件扩展名.txt,第二件事是我猜它只会显示带有独占文件锁的进程,这不是记事本给出的。