8

Я попробовал Unlocker 1.9.1, но он не работает правильно для меня на Windows7 (нормально работал на Windows XP), а также я попробовал LockHunter 2.0.2.103 x64 и сообщил об ошибке, но .... LockHunter фактически разблокирует файл из графического интерфейса, но не из командной строки.

Поэтому я хочу использовать 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 64bit
  • Microsoft Windows [Версия 6.1.7601]

2 ответа2

8

Вы можете использовать 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
0

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  

ВЫПОЛНИТЬ И ТАСККИЛЛ:

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                                                       

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .