Parece que você também deve especificar o ID do processo:
handle -c 2e8 -p 1144
Estou tentando fechar um identificador em um arquivo bloqueado no Windows, usando o software Sysinternals Handle ( link ).
Primeiro pesquiso pelo identificador aberto:
handle.exe "C:\Temp"
Emite-me o seguinte:
Far.exe pid: 1144 type: File 2E8: C:\Temp
Far.exe pid: 1144 type: File 3A8: C:\Temp
Em seguida, executo o handle.exe com o parâmetro -c. No entanto, qualquer que seja o número que eu digito, não faz nada. Eu tentei ambos: 1144, 2E8, 3A8 e 1144 em hexadecimais (478) como o software ajuda diz que aceita PID em hexadélico. Tudo o que eu digito, apenas emite o seguinte:
Handle v3.46
Copyright (C) 1997-2011 Mark Russinovich
Sysinternals - www.sysinternals.com
usage: handle [[-a [-l]] [-u] | [-c <handle> [-y]] | [-s]] [-p <process>|<pid>] [name]
-a Dump all handle information.
-l Just show pagefile-backed section handles.
-c Closes the specified handle (interpreted as a hexadecimal number).
You must specify the process by its PID.
WARNING: Closing handles can cause application or system instability.
-y Don't prompt for close handle confirmation.
-s Print count of each type of handle open.
-u Show the owning user name when searching for handles.
-p Dump handles belonging to process (partial name accepted).
name Search for handles to objects with <name> (fragment accepted).
No arguments will dump all file references.
O que estou fazendo de errado?
A sintaxe da opção tem -c entre as barras verticais, o que significa que é um uso que pode ser especificado por conta própria.
Para estar correto, o diagrama de sintaxe deve ser
| -c <handle> [-y] -p <pid> |
que diz que quando você especifica -c você também deve especificar -p e pode especificar -y, e que -c requer um identificador e -p requer um pid.
Tags windows sysinternals