【发布时间】:2014-03-23 15:22:45
【问题描述】:
我正在编写一个适用于锁定文件的 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"
没有结果。
如何使用 handle 了解我的 Foo.txt 文件是否正在使用中(锁定)?
也许有人可以给我一些handle用法的例子。
【问题讨论】:
-
记事本是一个简单的程序,将整个文件吞入内存并关闭文件句柄。很容易看到,您可以在记事本允许您编辑文件时删除文件。您需要一个 非常 大的文件才能有足够的时间来启动 Handle。
-
你是对的,@HansPassant。因此,我需要准确了解在什么情况下,当从命令行 Windows shell 编程时,Handle 将检测到文件为
in use,或者该程序检测到的任何内容。因为我想现在一个简单的echo InUse>>c:\Temp\FileLock.lck是不够的。你能提供一些方向或文件吗?谢谢。 -
也许你可以问一个新问题? “如何保持从 Windows 命令脚本打开的文件?”
-
完成,@HarryJohnston:stackoverflow.com/questions/22597647/…
标签: windows shell file-io locking handle