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]

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

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                                                       

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"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.