Como desbloquear arquivos usando handle.exe e nome do processo?

8

Eu tentei o Unlocker 1.9.1, mas ele não funciona corretamente para mim no Windows7 (funcionou bem no Windows XP) e também tentei o LockHunter 2.0.2.103 x64 e relatei um bug, mas ... O LockHunter realmente desbloqueia o arquivo da GUI, mas não da linha de comando.

Então, eu quero usar handle.exe por SysInternals para desbloquear um arquivo "TestPro.log". Eu sei o caminho absoluto, se isso ajuda. Eu posso listar e todos os processos que bloquearam o arquivo executando

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

O que eu preciso saber como desbloquear o arquivo usando as informações acima automaticamente na linha de comando . Nenhuma intervenção do usuário é possível.

  • Windows 7 64bit
  • Microsoft Windows [Versão 6.1.7601]
Radek
fonte

Respostas:

8

Você pode usar handle.exeuma vez para listar os PIDs e identificadores e, novamente, várias vezes para fechar cada um.

Use o for /fcomando para percorrer o resultado do primeiro comando. Não tenho uma máquina Windows à mão para testar, mas deve ser algo como isto:

De um arquivo em lotes:

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

Na linha de comando:

for /F "tokens=3,6 delims=: " %I IN ('handle.exe -accepteula TestPro.log') DO handle.exe -c %J -y -p %I
Stephen Jennings
fonte
Eu não posso fazer isso funcionar. Seu código me fornece que ('handle.exe was unexpected at this time.eu acho que faltava inantes. ('handle.exe was unexpected at this time.Mas então %%J contains : `portanto, não é um argumento válido para handle.exe
Radek
Sim, lembro-me de ter problemas para obter o comando exatamente correto, mas não consigo lembrar o que fiz do alto da minha cabeça. Estou tentando obter acesso ao meu arquivo em lotes novamente para poder atualizar minha resposta com a sintaxe correta.
Stephen Jennings
@Radek Atualizei minha resposta com o código real que usei. Parece que eu tenho %%Ie %%Jmisturado, e precisamos do cólon como um delimitador. Tente isso e veja como vai.
Stephen Jennings
Funciona bem (arquivo em lote e versões da linha de comando) se o cmd for iniciado como administrador. Alguma idéia de como posso fazê-lo funcionar como parte dos meus testes de automação noturna? runasnão funciona para mim neste caso.
Radek #
Tenho que trabalhar. O truque é que o comando a ser executado em runas é de fato o cmd.exe e o argumento para o cmd é o seu código. Eu estava fazendo isso sem cmd.
Radek
0

https://technet.microsoft.com/en-us/sysinternals/handle.aspx

TESTE E EXIBIÇÃO:

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

EXECUTAR:

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

EXECUTAR E ATRIBUIÇÃO DE TAREFAS:

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                                                       
Alexandre DEFRANCE
fonte
11
Você pode expandir isso e explicar como ele melhora a resposta aceita (com quatro anos e meio de idade) ?
bertieb
Vejo que seus comandos são diferentes da resposta aceita, por isso é uma resposta legítima. No entanto, como bertieb indicou, sua resposta precisa de uma explicação sobre o que seus comandos farão e como eles abordam a questão dos OPs. Obrigado por contribuir com o SuperUser.
Eu digo Reinstate Monica
0

Execução no menu de contexto sem um arquivo bat. 1) Coloque o arquivo handle64.exe em C: \ Windows. 2) Crie e execute o script 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"
Garric
fonte