En ocasiones, podemos encontrarnos con que necesitamos saber el proceso que tiene abierto un fichero o carpeta.
Por ejemplo, si intentamos mover o renombrar un archivo o carpeta y este está siendo usado por otro proceso, podemos encontrarnos con un error similar a este:
La acción no se puede completar porque otro programa tiene abierto el archivo
Veamos un ejemplo:
1) Abrimos una ventana de CMD y nos situamos en la carpeta: C:\SYSADMIT
2) Abrimos el explorador de ficheros y nos situamos en la carpeta: C:\SYSADMIT e intentamos eliminar la carpeta. Nos aparecerá el mensaje:
La acción no se puede completar porque otro programa abrió la carpeta o uno de sus archivos.
Cierre la carpeta o el archivo e inténtelo de nuevo.
Veamos distintas formas de saber el proceso que tiene abierto un archivo.
A continuación, disponemos del siguiente vídeo realizado por Pol Padrisa (@polpadrisa), donde podemos ver el detalle de funcionamiento de forma visual:
Podéis examinar y suscribiros al canal de Youtube de SYSADMIT en el siguiente enlace:
https://www.youtube.com/c/SYSADMIT
y aquí tenéis el contenido del post con el detalle y comandos utilizados:
La herramienta "monitor de recursos" se introduce en Windows Vista y Windows Server 2008 y nos permite motorizar el sistema.
Entre las utilidades que integra, podemos ver el proceso que tiene abierto un archivo o carpeta en cuestión.
Para abrir el monitor de recursos, podemos hacerlo abriendo el "administrador de tareas" (taskmgr.exe) y hacer clic en la opción: "Abrir el monitor de recursos"
Otra forma, es abrir el "monitor de recursos", directamente.
Para ello, bastará con ejecutar: perfmon.exe /res
Una vez abierto el "monitor de recursos", nos dirigimos a la pestaña CPU y en el apartado "Identificadores asociados", veremos la caja de búsqueda, allí, siguiendo el ejemplo anterior, escribiremos: C:\SYSADMIT y veremos el proceso que está bloqueando esta ruta: cmd.exe.
Por ejemplo, si intentamos mover o renombrar un archivo o carpeta y este está siendo usado por otro proceso, podemos encontrarnos con un error similar a este:
La acción no se puede completar porque otro programa tiene abierto el archivo
Veamos un ejemplo:
1) Abrimos una ventana de CMD y nos situamos en la carpeta: C:\SYSADMIT
2) Abrimos el explorador de ficheros y nos situamos en la carpeta: C:\SYSADMIT e intentamos eliminar la carpeta. Nos aparecerá el mensaje:
La acción no se puede completar porque otro programa abrió la carpeta o uno de sus archivos.
Cierre la carpeta o el archivo e inténtelo de nuevo.
Veamos distintas formas de saber el proceso que tiene abierto un archivo.
A continuación, disponemos del siguiente vídeo realizado por Pol Padrisa (@polpadrisa), donde podemos ver el detalle de funcionamiento de forma visual:
Podéis examinar y suscribiros al canal de Youtube de SYSADMIT en el siguiente enlace:
https://www.youtube.com/c/SYSADMIT
y aquí tenéis el contenido del post con el detalle y comandos utilizados:
Método 1: Monitor de recursos.
La herramienta "monitor de recursos" se introduce en Windows Vista y Windows Server 2008 y nos permite motorizar el sistema.
Entre las utilidades que integra, podemos ver el proceso que tiene abierto un archivo o carpeta en cuestión.
Para abrir el monitor de recursos, podemos hacerlo abriendo el "administrador de tareas" (taskmgr.exe) y hacer clic en la opción: "Abrir el monitor de recursos"
Otra forma, es abrir el "monitor de recursos", directamente.
Para ello, bastará con ejecutar: perfmon.exe /res
Una vez abierto el "monitor de recursos", nos dirigimos a la pestaña CPU y en el apartado "Identificadores asociados", veremos la caja de búsqueda, allí, siguiendo el ejemplo anterior, escribiremos: C:\SYSADMIT y veremos el proceso que está bloqueando esta ruta: cmd.exe.
Método 2: Process Explorer (Sysinternals)
Utilizando la herramienta gratuita: "Process Explorer" de Sysinternals, podemos averiguar el proceso que tiene abierto un archivo o carpeta.
Para ello, deberemos descargarnos la herramienta "Process Explorer":
procexp64.exe, para sistemas operativos de 64bits.
procexp.exe, para sistemas operativos de 32bits.
Una vez ejecutada la herramienta, nos dirigiremos al menú: "Find", "Find Handle or DLL" y nos aparecerá una ventana.
En la ventana, escribiremos la ruta a verificar y pulsaremos el botón de "Search", allí nos mostrará el proceso que bloquea la carpeta.
Método 3: Handle (Sysinternals)
Handle es una de las herramientas de SysInternals que también podemos descargar y utilizar de forma gratuita.
Handle se deberá ejecutar desde linea de comandos.
Handle se deberá ejecutar desde linea de comandos.
También podemos descargar la herramienta, en el enlace anterior, indicado en el método 2.
Su funcionamiento es muy sencillo, igual que con "Process Explorer", handle, dispone de los siguientes ejecutables:
handle64.exe, para sistemas operativos de 64bits.
handle.exe, para sistemas operativos de 32bits.
A continuación, ejecutamos handle seguido de la ruta que queremos ver el proceso que lo está utilizando:
handle.exe, para sistemas operativos de 32bits.
A continuación, ejecutamos handle seguido de la ruta que queremos ver el proceso que lo está utilizando:
muy util el proceso, gracias por subirlo
ResponderEliminargracias porfin joeee¡¡¡¡¡¡¡¡¡¡aleluya mae mia muchas gracias señor.
ResponderEliminarPor fin logre renombrar una de mis carpetas, muchas gracias.
ResponderEliminarGracias a ti por tu comentario.
EliminarUn saludo,
Xavi.
Lizgirl10Star me podes decir que proceso te estaba bloqueando las carpetas?
ResponderEliminarGracias por informarnos
ResponderEliminargracias solucione el problema
ResponderEliminar¡Gracias a ti por tu comentario!
EliminarUn saludo,
Xavi.
por que aparecen dos carpetas de
ResponderEliminararchivo de programas
archivo de porgramas (x86)
Hola Manuel,
EliminarTu sistema operativo es de 64bits, por tanto tienes dos carpetas de archivos de programa:
archivos de programa: Para programas de 64bits.
archivos de programa (x86): Para programas de 32bits.
Un saludo,
Xavi.
hola no puedo eliminar una carpeta aun usando los anteriores metodos simplemente no se puede borrar
ResponderEliminar¿Podrías indicar el error?
EliminarUn saludo,
Xavi.
WOW! Increiblemente útil este post, claro y conciso!!!!
ResponderEliminar¡Muchas gracias por tu comentario!
EliminarUn saludo,
Xavi.
Muchas gracias. No te haces una idea de la de veces que he acabado reiniciando por esto. Creo que Windows debería incorporar un botón para forzar al proceso a dejar de usar ese archivo.
ResponderEliminar¡Muchas gracias por tu comentario!
EliminarUn saludo,
Xavi.
Gracias me sirvió lo que explicas en las primeras 3 pantallas
ResponderEliminar¡Gracias! Me alegro que te haya funcionado.
EliminarUn saludo,
Xavi.
Copiaron y pegaron esta entrada en:
ResponderEliminarhttps://www.geekno.com/como-saber-que-proceso-tiene-abierto-un-archivo-en-windows.html
Y allá se dicen llamar "Geeks".
Hola Antonio José,
EliminarMuchas gracias amigo por el aviso.
Ya me he puesto en contacto con ellos para que citen la fuente.
¡Un saludo!
Xavi.
gracias man me sirvio el metodo
ResponderEliminarGracias a ti por tu comentario. Me alegro que te haya funcionado.
EliminarUn saludo,
Xavi.
Muchas gracias :)
ResponderEliminarPuesta en practica para servicios de desarrollo (Famous Apache)
Siempre quise saber este truco, por fin lo aprendo. Lo que nunca entenderé es por que cuando la carpeta te da el error, no te dice que proceso que lo esta usando... así es mas sencillo. Muchas gracias!!!
ResponderEliminarGracias a ti por tu comentario.
EliminarMe alegro que te haya funcionado.
Un saludo,
Xavi.
muy buen dato, gracias
ResponderEliminarGracias a ti por tu comentario.
EliminarUn saludo,
Xavi.
Qué hago si el propio explorar es quien está usando el archivo que quiero eliminar??
ResponderEliminarSi cierras la sesión y vuelves a iniciar sesión, el explorer se cierra y se abre de nuevo, quizás así lo puedas eliminar.
EliminarUn saludo,
Xavi.
no me funciona lo de cerrar sesión
Eliminarexiste alguna otra solución?
Puedes probar de arrancar con el pendrive de instalación de Windows, y acceder a las opciones de recuperación, allí obtener un CMD y eliminar el fichero.
EliminarPuedes seguir este procedimiento para obtener un CMD desde el proceso de instalación de Windows: Iniciamos desde le pendrive de instalación de Windows, seleccionamos idioma, seleccionamos "Reparar equipo", "Solucionar problemas", "Símbolo del sistema":
Un saludo,
Xavi.
uuuuuuuraaaaaaaaa!!!!! Ya eliminé la carpeta y ese molestoso mensajeeeee!!! Mil Graciasssss
ResponderEliminarDe nada!!
EliminarSaludos,
Xavi.
Hola master! me baje el procepcx y pude identificar que el pen drive estaba siendo usado por un proceso el tema es que para anular ese proceso me dice que no tengo autorizacion, sabes como hacer para habilitar el permiso para finalizar ese proceso?
ResponderEliminarFaltaría saber de que proceso se trata y si el proceso se ejecuta en el contexto de usuario o de sistema. Si es un proceso de sistema puede que no puedas detenerlo.
EliminarUn saludo,
Xavi.
Excelente, me funcionó el de process explorer muy bien
ResponderEliminar¡Gracias por tu comentario!
EliminarUn saludo,
Xavi.
Tremendo!
ResponderEliminarNo sabes como me ayudaste con este tip.
Un saludo!
¡Gracias por tu comentario!
EliminarUn saludo,
Xavi.
MUCHAS GRACIASSSSS <3333
ResponderEliminarBárbaro y Excelso! Junio 2021 y después de tantos años de usar sistemas Windows y he encontrado una gran solución a este tema de tantos años! En verdad nos has ayudado a muchísimos con esté artículo! :DDD
ResponderEliminarSí es posible, o más bien no sé si exista un tema similar con los servicios de Windows (Por ejemplo nunca he podido detener el servicio de "Avira Antivirus (C:\Program Files (x86)\Avira\AntiVir Desktop\avguard.exe)" De hecho en services.msc aparecen deshabilitadas las opciones de "Detener, Iniciar o Reiniciar", he probado correr una shell con privilegios de "SYSTEM" precisamente con otra utilidad de SysInternals (PsExec), pero no, con scripts de Powershell, etc.. Y bueno jamás lo he conseguido.
Existe alguna herramienta de apoyo igualmente para realizar o verificar los procesos que impiden esto? Gracias de antemano! Excelente Artículo! Un gran saludo desde México!
Hola,
EliminarPuedes probar con la herramienta "Autoruns" que está disponible en la web de Microsoft.
Con "Autoruns" podrás definir que programas quieres que se inicien al iniciar el equipo.
Un saludo,
Xavi.
Xavi, primeramente muchas gracias por responderme! :D Y bueno, y orientándote un poco más del caso que te comentaba, este antivirus por ejemplo utiliza cosas que no conozco bien, se que les llaman "HOOKS" en Windows y algo así cómo "Shadows" que son un nivel más arriba de los servicios, inician con el Kernel del Sistema, por esto es que las opciones de "Detener, Iniciar o Reiniciar" están deshabilitadas, si usara "Autoruns" para verificar no me serviría, inclusive con valores en el registro puedo "Deshabilitar" dicho servicio pero quedaría definitivamente así, al menos durante el tiempo que esté la sesión abierta del Usuario en Windows y eso no busco, utilizo el servicio de "WSMan.Management - Windows Remote Management" vía PowerShell y administro por consola ciertas cosas de los equipos en la red de la empresa, y bueno, no entiendo cómo es posible que con el UAC Windows si permita detener el servicio y vía consola, ya sea remota o localmente en el equipo, no es posible hacer esto, que es lo que Windows hace que le permite tener este compartamiento? Pensé que tenía que ver con "CACLS" y la lista de control de acceso DACL en las carpetas de Instalación, pero tampoco, cómo te comentaba, inclusive he corrido shell con privilegios de SYSTEM y ni así pude detener el servicio por consola, Ejemplo "Net Stop ServiceName" y con un simple "Click Secundario del Ratón" si puedo detener el servicio? Espero haberme explicado un poco mejor y si conocieras alguna utilidad, así como tu excelente artículo y con alguna herramienta de terceros, poder detener un "Servicio Indetenible" por consola de Windows o Script de Powershell, etc.
EliminarDesde ya gracias nuevamente por tu valiosa atención y apoyo!!
Hola,
EliminarPor lo que he entendido de tu comentario, lo que quieres es poder detener un servicio que no permite ser detenido desde GUI, o con el comando: Net Stop, etc...
Puedes utilizar uno de los siguientes métodos:
----- Método 1 -----:
sc queryex Nombre-del-servicio
y de la salida del comando, apuntas su PID.
A continuación, ejecutas:
taskkill /F /PID Numero-de-PID
Ese número de PID es el que has obtenido del comando anterior.
----- Método 2 -----:
Inicias el equipo en modo seguro.
Abres regedit y te sitúas en: HKLM - System - ControlSet001 - Services
Buscas el nombre del servicio.
Cambiar el valor de la clave "Start" de 3 a 4.
El valor 4 significa: Disabled.
Un saludo,
Xavi.
Imposible salir de aquí sin agradecerlo. Muuuchas gracias, me has ahorrado una comedura de coco muy seria :)
ResponderEliminar¡Me alegro que te haya ayudado!
EliminarSaludos,
Xavi.
Gracias, ¡Me ha sido de mucha utilidad!
ResponderEliminarMuchisimas gracias me ha sido de gran ayuda.
ResponderEliminarGracias Xavier! Nos ha sido de utilidad!
ResponderEliminar