我尝试了 Unlocker 1.9.1,但是它在 Windows7 上无法正常工作(在 Windows XP 上运行良好),我也尝试了 LockHunter 2.0.2.103 x64 并报告了一个错误,但是... LockHunter 实际上是从 GUI 解锁文件,而不是从命令行解锁。
所以我想使用 handle.exe系统内部解锁一个文件“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]
答案1
您可以使用handle.exe
一次列出 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
答案2
https://technet.microsoft.com/en-us/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
执行(关闭句柄)然后执行 TASKKILL:
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
答案3
无需使用 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"