如何使用handle.exe和进程名解锁文件?


8

我尝试了Unlocker 1.9.1,但在Windows7上无法正常工作(在Windows XP上可以正常工作),我也尝试了LockHunter 2.0.2.103 x64,并报告了一个错误,但是.... LockHunter实际上是从GUI解锁了文件,但不是从命令行。

所以我想通过使用handle.exe Sysinternals的解锁一个文件“TestPro.log”。我知道绝对有帮助的路径。我可以列出并通过执行以下所有锁定文件的进程

C:\Windows\system32>c:\edutester\progs\handle testpro.log
java.exe           pid: 2120   type: File           338: C:\Users\Public\TestPro
\TestPro Automation Framework\Logs\TestPro.log
java.exe           pid: 1004   type: File           934: C:\Users\Public\TestPro
\TestPro Automation Framework\Logs\TestPro.log

我需要知道如何使用命令行中的上述信息自动解锁文件。没有用户的干预是可能的。

  • Windows 7 64位
  • Microsoft Windows [版本6.1.7601]

Answers:


8

您可以使用handle.exe一次列出PID和句柄,然后多次使用以关闭每个PID和句柄。

使用该for /f命令循环浏览第一个命令的结果。我没有方便进行测试的Windows机器,但是它看起来应该像这样:

从批处理文件:

for /F "tokens=3,6 delims=: " %%I IN ('handle.exe -accepteula TestPro.log') DO handle.exe -c %%J -y -p %%I

在命令行中:

for /F "tokens=3,6 delims=: " %I IN ('handle.exe -accepteula TestPro.log') DO handle.exe -c %J -y -p %I

我无法使它工作。您的代码给了我,('handle.exe was unexpected at this time.我认为in之前缺少,('handle.exe was unexpected at this time.但是然后%%J contains :`所以它不是handle.exe的有效参数
Radek

是的,我记得很难完全正确地执行命令,但是我不记得自己干了什么。我试图再次访问我的批处理文件,以便可以使用正确的语法更新答案。
史蒂芬·詹宁斯

@Radek我用我使用的实际代码更新了答案。貌似我%%I%%J混出来的,我们需要的冒号作为分隔符。试试看,看看如何进行。
史蒂芬·詹宁斯

如果cmd以管理员身份启动,则可以很好地工作(批处理文件和命令行版本)。知道如何在夜间自动化测试中使其发挥作用吗?runas在这种情况下对我不起作用。
Radek 2012年

得到它的工作。诀窍在于,在runas下运行的命令实际上是cmd.exe,而cmd的参数是您的代码。我当时没有cmd。
Radek

0

https://technet.microsoft.com/zh-cn/sysinternals/handle.aspx

测试与展示:

for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula notepad.exe') do @echo %i %j                                                                    

执行:

for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula notepad.exe') do handle.exe -c %j -y -p %i  

执行和任务:

for /f "tokens=3,6 skip=5 delims=: " %i in ('handle.exe -accepteula notepad.exe') do handle.exe -c %j -y -p %i & taskkill /t /f /PID %i                                                       

1
您能否对此进行扩展,并解释一下(已有四年半的历史)接受的答案有何改进?
bertieb

我看到您的命令与接受的答案不同,因此它是合法的答案。但是,正如bertieb指出的那样,您的答案需要对命令将要执行的操作以及它们如何解决OP问题的解释。感谢您为SuperUser做出的贡献。
我说恢复莫妮卡

0

在没有bat文件的情况下从上下文菜单执行。1)将文件handle64.exe放入C:\ Windows。2)创建并执行reg脚本

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\WhatBlockFile]
    "Icon"="C:\\ico\\Buttons\\Annotate_Help.ico"
    "MUIVerb"="Что блокирует?"
    "Position"="Top"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\WhatBlockFile\command]
    @="C:\\Windows\\system32\\Cmd.exe /c C:\\Windows\\handle64.exe -u \"%1\" & pause"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.