Scripting

如何獲取打開文件的完整路徑

  • November 13, 2016

我有在 Windows 伺服器上執行的腳本來對某些文件執行操作。該腳本經常失敗,因為各種使用者(甚至我自己)在伺服器上打開了他們忘記關閉的文件共享,因此文件夾被鎖定。

我添加了程式碼來檢查打開的文件net file,如果它們匹配某些模式則關閉它們。存在的限制是net file總結了打開文件的路徑,例如

ID         Path                                    User name            # Locks
-------------------------------------------------------------------------------
2          C:\Program Files\...\cocoon-2.1.11\     huttarl               0

當打開文件的完整路徑是

C:\Program Files\Apache Software Foundation\cocoon-2.1.11

因此,當我的腳本檢查文件路徑是否與特定模式匹配時,例如“Apache”,它有時會錯過列表...中間的文件net file

所以我的問題是,如何在腳本中獲取打開文件的完整路徑?

目前,我正在使用 cygwin/bash。因此,如果我必須切換到 WSH,則需要進行一些移植。但如果這是唯一的選擇,我會去的。

如果重要,系統資訊面板會顯示我的 Windows 版本是 Windows Server Standard,(c) 2007,SP2。

我發現以下有用:

openfiles /query /v | findstr "string what You want"

你應該使用PsFile

關於它

“net file”命令向您顯示其他電腦在您執行該命令的系統上打開的文件列表,但是它會截斷長路徑名並且不允許您查看遠端系統的資訊。PsFile 是一個命令行實用程序,它顯示系統上遠端打開的文件列表,它還允許您按名稱或文件標識符關閉打開的文件。

引用自:https://serverfault.com/questions/508368