handle.exe 및 프로세스 이름을 사용하여 파일을 잠금 해제하는 방법?


8

Unlocker 1.9.1을 시도했지만 Windows7 (Windows XP에서는 정상적으로 작동)에서 제대로 작동하지 않으며 LockHunter 2.0.2.103 x64를 시도하고 버그를보고했지만 .... LockHunter는 실제로 GUI에서 파일을 잠금 해제하지만 명령 행이 아닙니다.

따라서 SysInternals의 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

명령 줄 에서 위의 정보를 자동으로 사용하여 파일을 잠금 해제하는 방법을 알아야합니다 . 사용자 개입이 불가능합니다.

  • 윈도우 7 64 비트
  • Microsoft Windows [버전 6.1.7601]

답변:


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

나는 그것을 작동시킬 수 없다. 귀하의 코드는 이전 ('handle.exe was unexpected at this time.에 누락 된 것으로 생각합니다 . 하지만 그때 :`그래서 handle.exe에 대한 유효한 인수가 아닙니다.in('handle.exe was unexpected at this time.%%J contains
Radek

예, 명령을 정확히받는 데 어려움이 있었지만 머리 위로했던 일을 기억할 수 없습니다. 올바른 구문으로 답변을 업데이트 할 수 있도록 배치 파일에 다시 액세스하려고합니다.
Stephen Jennings 5

@ Radek 나는 내가 사용한 실제 코드로 답변을 업데이트했다. 외모는 내가 가지고 같은 %%I%%J혼합, 그리고 우리는 구분 기호로 콜론이 필요합니다. 이것을 시도하고 어떻게되는지보십시오.
Stephen Jennings

cmd가 관리자로 시작된 경우 배치 파일 및 명령 행 버전 모두 잘 작동합니다. 야간 자동화 테스트의 일부로 어떻게 작동하게 할 수 있습니까? runas이 경우 나를 위해 작동하지 않습니다.
Radek

작동했습니다. 트릭은 runas에서 실행되는 명령이 실제로 cmd.exe이고 cmd의 인수가 코드라는 것입니다. 나는 cmd없이 그것을하고 있었다.
Radek

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                                                       

1
이것을 확장하고 (4 년 반) 답변 에서 어떻게 개선되는지 설명 할 수 있습니까 ?
bertieb

귀하의 명령이 허용되는 답변과 다르므로 합법적 인 답변입니다. 그러나 bertieb이 지적한 바와 같이, 귀하의 답변 귀하의 명령이 무엇을하고 어떻게 OPs 질문을 처리하는지에 대한 설명이 필요 합니다. SuperUser에 기여해 주셔서 감사합니다.
나는

0

박쥐 파일없이 상황에 맞는 메뉴에서 실행합니다. 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"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.