Come sbloccare i file usando handle.exe e il nome del processo?


8

Ho provato Unlocker 1.9.1 ma non funziona correttamente su Windows 7 (ha funzionato bene su Windows XP) e ho anche provato LockHunter 2.0.2.103 x64 e segnalato un bug ma .... LockHunter in realtà sblocca il file dalla GUI ma non dalla riga di comando.

Così voglio usare handle.exe da SysInternals per sbloccare un file "TestPro.log". Conosco il percorso assoluto se aiuta. Posso elencare e tutti i processi che hanno bloccato il file eseguendolo

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

Quello che devo sapere come sbloccare il file utilizzando automaticamente le informazioni sopra dalla riga di comando . Non è possibile alcun intervento da parte dell'utente.

  • Windows 7 a 64 bit
  • Microsoft Windows [Versione 6.1.7601]

Risposte:


8

È possibile utilizzare handle.exeuna volta per elencare i PID e gli handle, quindi più volte per chiuderli ciascuno.

Utilizzare il for /fcomando per scorrere il risultato del primo comando. Non ho una macchina Windows a portata di mano su cui testare, ma dovrebbe essere simile a questa:

Da un file batch:

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

Dalla riga di comando:

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

Non riesco a farlo funzionare. Il tuo codice mi dà ('handle.exe was unexpected at this time.penso che manchi inprima. ('handle.exe was unexpected at this time.Ma poi %%J contains : `quindi non è un argomento valido per handle.exe
Radek,

Sì, ricordo di aver avuto problemi a ottenere il comando esattamente nel modo giusto, ma non ricordo cosa ho fatto dalla cima della mia testa. Sto provando ad accedere nuovamente al mio file batch in modo da poter aggiornare la mia risposta con la sintassi corretta.
Stephen Jennings,

@Radek Ho aggiornato la mia risposta con il codice effettivo che ho usato. Sembra che mi sia preso %%Ie %%Jmischiato, e abbiamo bisogno del colon come delimitatore. Prova questo e guarda come va.
Stephen Jennings,

Funziona bene (sia file batch che versioni da riga di comando) se cmd è stato avviato come amministratore. Hai idea di come posso farlo funzionare come parte del mio test di automazione durante la notte? runasnon funziona per me in questo caso.
Radek,

Ha funzionato. Il trucco è che il comando da eseguire sotto runas è in realtà cmd.exe e l'argomento per cmd è il tuo codice. Lo stavo facendo senza cmd.
Radek,

0

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

TEST E DISPLAY:

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

ESEGUIRE:

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

ESEGUIRE E 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                                                       

1
Puoi approfondire questo e spiegare come migliora la risposta accettata (di quattro anni e mezzo) ?
bertieb,

Vedo che i tuoi comandi sono diversi dalla risposta accettata, quindi è una risposta legittima. Tuttavia, come indicato da bertieb, la tua risposta richiede una spiegazione su cosa faranno i tuoi comandi e su come risponderanno alla domanda dei PO. Grazie per aver contribuito a SuperUser.
Dico Reinstate Monica il

0

Esecuzione dal menu contestuale senza file bat. 1) Inserire il file handle64.exe in C: \ Windows. 2) Crea ed esegui reg script

    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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.