Desbloquear o eliminar carpeta bloqueada mediante programación

Desbloquear o eliminar carpeta bloqueada mediante programación

1. Resumen

No pude encontrar cómo puedo desbloquear o eliminar una carpeta bloqueada con todas las subcarpetas a través de la interfaz de línea de comandos.


2. Argumentación

Estoy trabajando en el proyecto. Por ejemplo, mi carpeta de fuentes — sources, carpeta de salida — output. Veo archivos y/o hago cambios de prueba en output→ Agrego cambios en sources→ Ejecuto el comando de compilación ( build, por ejemplo), que debería sobrescribir output. Pero buildno comienza correctamente:

Carpeta en uso

Carpeta en uso

La acción no se puede completar porque la carpeta o un archivo que contiene está abierto en otro programa.

Cierra la carpeta o el archivo y vuelve a intentarlo.

Por lo tanto, antes de cada buildinicio abrí LockHunter → desbloqueado output→ ejecuté build.

Sería bueno, si fuera posible ejecutar el comando para desbloquear o eliminar outputantes build, que no necesite ejecutar LockHunter manualmente cada vez, dedicando tiempo a ello.


3.MCVE

Creé una carpeta KiraUnlockCLI→ abrí el símbolo del sistema → me moví a KiraUnlockCLIella ( cd KiraUnlockCLI) → KiraUnlockCLIbloqueado:

Carpeta bloqueada

Necesito desbloquear o eliminar KiraUnlockCLImediante programación.


4. Requisitos

  1. Cualquier tipo de programa puede bloquear outputcarpetas y/o archivos en ella, ejemplos:

    1. Explorador de Windows
    2. símbolo del sistema
    3. Editor de texto
    4. Navegador
    5. Visor de imágenes
  2. La solución debe desbloquear carpetas, no únicamente archivos. Puedo abrir en programas de terceros cualquier archivo outputy sus subcarpetas.

  3. Se deben admitir rutas relativas. outputestá ubicado en directorios diferentes para mí, otros desarrolladores e Integración Continua (Travis CI, AppVeyor).

5. No ayudado

5.1. Caminos relativos

  1. LockHunterno admite rutas relativas.

    A principios de septiembre de 2019 yoescribió un problema→ Le conté mi problema enFormulario de comentarios de LockHunter→ No he recibido ningún comentario.

5.2. Soporte de carpetas

Estos programas pueden desbloquear archivos, no carpetas.

  1. ArchivoASSASSIN:

    FileASSASSIN /unlock /silent KiraUnlockCLI
    
  2. OcupadoEliminar

5.3. PID específico

  1. Manejar— PID necesarios para el desbloqueo. Pero necesito matar procesos con cualquier PID; consulte el punto 4.1 de mi pregunta.

5.4. GUI

No pude encontrar ninguna información sobre la interfaz de línea de comandos de estos programas:

  1. Desbloqueador de IObits
  2. Desbloquealo

5.5. no funciona

  1. rm -rf KiraUnlockCLI( rmdeGnuWin32):

    /usr/bin/rm: cannot remove 'KiraUnlockCLI`: Device or resource busy
    
  2. Vista de archivos abiertos— sin efecto después de este comando:

    openedfilesview /closefolder closeprocess killprocess KiraUnlockCLI
    
  3. quienmebloquea no funciona en windows 10.

  4. Desbloqueadorunlocker D:\SashaDebugging\KiraUnlockCLI:

    Desbloqueador

    No se encontró ninguna manija de bloqueo.

    Sin embargo, Unlocker puede ayudarte a lidiar con este objeto.

    Elija la acción que desea realizar sobre el objeto.

  5. Punto muertoNo se pueden desbloquear carpetas a través de la interfaz de línea de comandos. Vermi problemaal rastreador de problemas de DeadLock.


6. No ofrezcas

  1. yo séefectos secundarios; Por favor, no me digas que no necesito desbloquear la carpeta.
  2. Leí estas preguntas de superusuario y sus respuestas antes de publicar mi pregunta:

    1. No se puede eliminar la carpeta vacía porque está usada
    2. ¿Hay alguna manera de manejar un archivo bloqueado desde la línea de comando y liberarlo?
    3. ¿Cómo elimino una carpeta que está en uso?
    4. Eliminar un directorio de la línea de comandos de Windows incluso si se ha abierto en un programa
    5. Eliminar archivo/carpeta bloqueado desde la línea de comando
  3. Revisé programas deesta listaen el sitio de Unlocker.

Respuesta1

Desde que encontré IOBit Unlocker (hace ~10 años), dejé de usar todos los que me proporcionaste y algunos más, ¿por qué? en realidad elimina los archivos/carpetas sin importar qué, tiene una interfaz limpia y también puedes automatizar (como lo pediste). Unos años más tarde, encontré un artículo en línea que decía que incluso elimina los archivos AV de Avast que están protegidos y en uso.

Si lo desea, puede instalarlo y dejarlo así o simplemente obtener los archivos y usarlo de forma independiente (úselo IObitUnlocker.exe /?para ver la ayuda de la línea de comandos):

Instalado:

IObitUnlocker.exe /Delete /Advanced <folder>

Ser único:

cd <app folder>
sc create IObitUnlocker type= kernel start= demand binPath= "IObitUnlocker.sys"
IObitUnlocker.exe /Delete /Advanced <folder>
sc delete IObitUnlocker
rd /S /Q %AllUsersProfile%\IObit

Una desventaja de la automatización es que muestra un mensaje después de la acción, pero puedes usar timeout /T <time> && taskkill /IM IObitUnlocker.exe. Depende <time>del contenido/jerarquía de la carpeta, cuántos archivos están en uso, la velocidad de su sistema y la carga de CPU/HDD). Tenga en cuenta que se necesita elevación para desbloquear.

Si utiliza AutoHotKey, el cierre del cuadro de diálogo (y cualquier interacción de interfaz de usuario que se le ocurra) es trivialmente fácil de automatizar.

SetTimer, DismissUnlocker, 1000
DismissUnlocker() {
  If WinExist("IObit Unlocker ahk_class #32770")
    ControlClick, Button1
}

información relacionada