¿Del / s (a) no funciona en absoluto (solo está disponible en algunas versiones) o (b) deja el directorio de nivel superior pero elimina todo lo que está debajo de él o (c) deja todos los directorios mientras elimina todos los archivos?
wnoise
@ Aaron, responda c, debe usar rmdir / s para eliminar directorios y archivos.
Wedge
31
¿No es realmente format c:entonces la instalación de Linux? Estoy bromeando, por supuesto.
Basile Starynkevitch
Respuestas:
694
RMDIR o RD si está utilizando el símbolo del sistema clásico (cmd.exe):
rd /s /q "path"
RMDIR [/ S] [/ Q] [unidad:] ruta
RD [/ S] [/ Q] [unidad:] ruta
/ S Elimina todos los directorios y archivos en el directorio especificado además del directorio en sí. Se usa para eliminar un árbol de directorios.
/ Q Modo silencioso, no pregunte si está bien para eliminar un árbol de directorios con / S
Si está utilizando PowerShell puede utilizar Remove-Item(que es un alias a del, erase, rd, ri, rmy rmdir), y toma un -Recurseargumento que puede ser cortocircuitado a-r
Vale la pena señalar que para grandes cantidades de archivos, rmdir / s / q es típicamente significativamente más rápido que la operación equivalente "seleccionar dir, shift + eliminar" en el explorador.
Wedge
99
Esto no elimina archivos, como rm -rf, y también devuelve un valor distinto de cero cuando el directorio no existe, por rd /s /q foo && echo "yay"lo que fallará si el directorio "foo" no existe.
Dirk Groeneveld
17
¿Qué pasa si dir. ¿No está vacío y se obtienen algunos archivos Access is deniedy otros The process cannot access the file because it is being used by another process?
Eugene
66
Acabo de probar esto en siete y debes hacer / S y / Q (mayúsculas)
prefecto ford
2
Desconcertado aquí. Yo sé que probé este comando y no funcionó si había archivos en el árbol de directorios; ahora vuelvo y. . . mágicamente parece funcionar. ¿Alguien más experimenta un comportamiento inconsistente con esto?
¡Mi héroe! Y un consejo: creas tu carpeta vacía en C: \ empty, luego, una vez dentro de cada carpeta loca, solo puedes hacerrobocopy /mir c:\empty .
Léon Pelletier el
Esto takeownme ayudó mientras copiaba la carpeta del sistema Linux con rsync por error y no tenía privilegios para eliminar esa carpeta ... Ni siquiera la robocopy funcionó. Gracias
Jarda
1
Muy buena respuesta. Funciona. (todas las demás respuestas en la página no). Pero cacls está en desuso. ¿Es posible hacer una respuesta contemporánea, por favor? La segunda variante ya funciona y no está en desuso.
Gangnus
Esto no hace nada por mí. ¿Podría alguien explicar cómo se supone que debe funcionar? (robocopy) - Puede eliminar el contenido de las carpetas, pero no las carpetas en sí
Ralf
114
RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S Elimina todos los directorios y archivos en el directorio especificado, además del directorio en sí. Se usa para eliminar un árbol de directorios.
/Q Modo silencioso, no pregunte si está bien para eliminar un árbol de directorios con /S
La respuesta aceptada es excelente, pero suponiendo que tenga Node instalado, puede hacerlo de manera mucho más precisa con la biblioteca de nodos "rimraf", que permite patrones globales. Si usa esto mucho (lo hago), simplemente instálelo globalmente.
yarn global add rimraf
entonces, por ejemplo, un patrón que uso constantemente:
rimraf .\**\node_modules
o para una línea que le permite esquivar la instalación global, pero que lleva un poco más de tiempo para la descarga dinámica del paquete:
funcionó para mí en combinación w / rmdir / s / q ya que algunos archivos estaban bloqueados y rmdir fallaba en esos. del / foldername destruyó los archivos bloqueados que luego permitieron a rmdir deshacerse del directorio raíz. Agradable.
Hay tres escenarios en los que rm -rfse usa comúnmente donde se espera que regrese 0:
La ruta especificada no existe.
La ruta especificada existe y es un directorio.
La ruta especificada existe y es un archivo.
Voy a ignorar todo el tema de los permisos, pero nadie usa permisos ni intenta negarse a sí mismo el acceso de escritura a las cosas en Windows de todos modos (OK, eso es una broma ...).
Primero establezca ERRORLEVELen 0 y luego elimine la ruta solo si existe, utilizando diferentes comandos dependiendo de si es o no un directorio. IF EXISTno se establece ERRORLEVELen 0 si la ruta no existe, por lo ERRORLEVELque es necesario establecerlo en 0 primero para detectar correctamente el éxito de una manera que imite el rm -rfuso normal . Proteger el RDcon IF EXISTes necesario porque RD, a diferencia rm -f, arrojará un error si el objetivo no existe.
El siguiente fragmento de script supone que DELPATH está precomillado. (Esto es seguro cuando haces algo como SET DELPATH=%1. Intenta poner ECHO %1un .cmdy pasarle una discusión con espacios en él y ver qué pasa por ti mismo). Después de que se complete el fragmento, puede verificar si hay fallas IF ERRORLEVEL 1.
: # Determine whether we need to invoke DEL or RD or do nothing.
SET DELPATH_DELMETHOD=RD
PUSHD %DELPATH% 2>NUL
IF ERRORLEVEL 1 (SET DELPATH_DELMETHOD=DEL) ELSE (POPD)
IF NOT EXIST %DELPATH% SET DELPATH_DELMETHOD=NOOP
: # Reset ERRORLEVEL so that the last command which
: # otherwise set it does not cause us to falsely detect
: # failure.
CMD /C EXIT 0
IF %DELPATH_DELMETHOD%==DEL DEL /Q %DELPATH%
IF %DELPATH_DELMETHOD%==RD RD /S /Q %DELPATH%
El punto es que todo es más simple cuando el entorno simplemente se ajusta a POSIX. O si instala un MSYS mínimo y simplemente lo usa.
Puede instalar GnuWin32 y usar los comandos * nix de forma nativa en Windows. Instalo esto antes de instalar cualquier otra cosa en una copia fresca de Windows. :)
ÚSELO BAJO SU PROPIO RIESGO. INFORMACIÓN PROPORCIONADA "TAL CUAL". NO PROBADO EXTENSIVAMENTE.
Haga clic con el botón derecho en el icono de Windows (generalmente en la parte inferior izquierda)> haga clic en "Windows PowerShell (Administrador)"> use este comando (con el debido cuidado, puede eliminar fácilmente todos sus archivos si no tiene cuidado):
rd -r -include *.* -force somedir
¿Dónde somedirestá el directorio no vacío que desea eliminar?
Tenga en cuenta que con los discos externos adjuntos, o discos con problemas, Windows a veces se comporta de forma extraña: no produce errores en la eliminación (o en ningún intento de copia), pero el directorio no se elimina (o no se copia) como se indica. (Descubrí que en este caso, al menos para mí, el comando dado por @n_y en su respuesta producirá errores como 'get-childitem: el archivo o directorio está dañado e ilegible' como resultado en PowerShell)
TARDE PERO RESPUESTA IMPORTANTE para cualquier persona que tenga problemas para instalar paquetes npm en la máquina Windows y si ve un error que dice " rm -rf..." no se encontró el comando. Puede usar bash cli para ejecutar el comando rm en Windows.
para los usuarios de npm, puede cambiar la configuración de npm de npm config set script-shell "C:\Program Files\Git\bin\bash.exe"esta manera si el paquete npm que está intentando instalar tiene un script posterior a la instalación que usa el rm -rfcomando, podrá ejecutar ese rmcomando sin necesidad de cambiar nada en el paquete npm o deshabilitar la configuración de scripts posteriores a la instalación. (Por ejemplo, styled-componentsusa el rmcomando en sus scripts posteriores a la instalación)
Si solo quieres usar el rmcomando, puedes usar fácilmente el bash y pasar los argumentos.
Entonces, sí, puede usar el comando 'rm' en Windows.
Solo intenta disminuir la longitud del camino. es decir :: Cambiar el nombre de todas las carpetas que conducen a dicho archivo a los nombres más pequeños posibles. Diga los nombres de una letra. Continúe renombrando hacia arriba en la jerarquía de carpetas. Con esto, efectivamente reduce la longitud del camino. Ahora finalmente intente eliminar el archivo de inmediato.
format c:
entonces la instalación de Linux? Estoy bromeando, por supuesto.Respuestas:
RMDIR o RD si está utilizando el símbolo del sistema clásico (cmd.exe):
Si está utilizando PowerShell puede utilizar
Remove-Item
(que es un alias adel
,erase
,rd
,ri
,rm
yrmdir
), y toma un-Recurse
argumento que puede ser cortocircuitado a-r
fuente
rd /s /q foo && echo "yay"
lo que fallará si el directorio "foo" no existe.Access is denied
y otrosThe process cannot access the file because it is being used by another process
?administración:
Funciona para cualquier cosa, incluidos los archivos sys
EDITAR: En realidad, encontré la mejor manera que también resuelve el problema de la ruta del archivo durante demasiado tiempo:
fuente
robocopy /mir c:\empty .
takeown
me ayudó mientras copiaba la carpeta del sistema Linux con rsync por error y no tenía privilegios para eliminar esa carpeta ... Ni siquiera la robocopy funcionó. GraciasRMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path
/S
Elimina todos los directorios y archivos en el directorio especificado, además del directorio en sí. Se usa para eliminar un árbol de directorios./Q
Modo silencioso, no pregunte si está bien para eliminar un árbol de directorios con/S
fuente
Puede instalar cygwin, que tiene
rm
así comols
etc.fuente
Vaya a la ruta y active este comando.
/ s: elimina el directorio especificado y todos los subdirectorios, incluidos los archivos. Use / s para eliminar un árbol.
/ q: ejecuta rmdir en modo silencioso. Elimina directorios sin confirmación.
/? : Muestra ayuda en el símbolo del sistema.
fuente
Para eliminar un directorio (ya sea que exista o no) use lo siguiente:
fuente
rmdir /S /Q %DIRNAME%
fuente
La respuesta aceptada es excelente, pero suponiendo que tenga Node instalado, puede hacerlo de manera mucho más precisa con la biblioteca de nodos "rimraf", que permite patrones globales. Si usa esto mucho (lo hago), simplemente instálelo globalmente.
entonces, por ejemplo, un patrón que uso constantemente:
o para una línea que le permite esquivar la instalación global, pero que lleva un poco más de tiempo para la descarga dinámica del paquete:
fuente
Prueba este comando:
fuente
rmdir / s dirname
fuente
Primero, repasemos lo que
rm -rf
hace:Hay tres escenarios en los que
rm -rf
se usa comúnmente donde se espera que regrese0
:Voy a ignorar todo el tema de los permisos, pero nadie usa permisos ni intenta negarse a sí mismo el acceso de escritura a las cosas en Windows de todos modos (OK, eso es una broma ...).
Primero establezca
ERRORLEVEL
en 0 y luego elimine la ruta solo si existe, utilizando diferentes comandos dependiendo de si es o no un directorio.IF EXIST
no se estableceERRORLEVEL
en 0 si la ruta no existe, por loERRORLEVEL
que es necesario establecerlo en 0 primero para detectar correctamente el éxito de una manera que imite elrm -rf
uso normal . Proteger elRD
conIF EXIST
es necesario porqueRD
, a diferenciarm -f
, arrojará un error si el objetivo no existe.El siguiente fragmento de script supone que DELPATH está precomillado. (Esto es seguro cuando haces algo como
SET DELPATH=%1
. Intenta ponerECHO %1
un.cmd
y pasarle una discusión con espacios en él y ver qué pasa por ti mismo). Después de que se complete el fragmento, puede verificar si hay fallasIF ERRORLEVEL 1
.El punto es que todo es más simple cuando el entorno simplemente se ajusta a POSIX. O si instala un MSYS mínimo y simplemente lo usa.
fuente
a través de Powershell
a través del símbolo del sistema
https://stackoverflow.com/a/35731786/439130
fuente
Aquí está lo que tú necesitas hacer...
Cree un archivo por lotes con la siguiente línea
RMDIR /S %1
Guarde su archivo por lotes como
Remove.bat
y póngalo enC:\windows
Cree la siguiente clave de registro
HKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)
Inicie
regedit
y actualice el valor predeterminadoHKEY_CLASSES_ROOT\Directory\shell\Remove Directory (RMDIR)\default
con el siguiente valor"c:\windows\REMOVE.bat" "%1"
¡Eso es! Ahora puede hacer clic derecho en cualquier directorio y usar la función RMDIR
fuente
Usando Powershell 5.1
Reemplace los registros con el nombre del directorio que desea eliminar.
get-childitem busca el directorio secundario con el nombre de forma recursiva desde la ruta actual (.).
remove-item elimina el resultado.
fuente
Puede instalar GnuWin32 y usar los comandos * nix de forma nativa en Windows. Instalo esto antes de instalar cualquier otra cosa en una copia fresca de Windows. :)
fuente
ÚSELO BAJO SU PROPIO RIESGO. INFORMACIÓN PROPORCIONADA "TAL CUAL". NO PROBADO EXTENSIVAMENTE.
Haga clic con el botón derecho en el icono de Windows (generalmente en la parte inferior izquierda)> haga clic en "Windows PowerShell (Administrador)"> use este comando (con el debido cuidado, puede eliminar fácilmente todos sus archivos si no tiene cuidado):
¿Dónde
somedir
está el directorio no vacío que desea eliminar?Tenga en cuenta que con los discos externos adjuntos, o discos con problemas, Windows a veces se comporta de forma extraña: no produce errores en la eliminación (o en ningún intento de copia), pero el directorio no se elimina (o no se copia) como se indica. (Descubrí que en este caso, al menos para mí, el comando dado por @n_y en su respuesta producirá errores como 'get-childitem: el archivo o directorio está dañado e ilegible' como resultado en PowerShell)
fuente
TARDE PERO RESPUESTA IMPORTANTE para cualquier persona que tenga problemas para instalar paquetes npm en la máquina Windows y si ve un error que dice "
rm -rf...
" no se encontró el comando. Puede usar bash cli para ejecutar el comando rm en Windows.para los usuarios de npm, puede cambiar la configuración de npm de
npm config set script-shell "C:\Program Files\Git\bin\bash.exe"
esta manera si el paquete npm que está intentando instalar tiene un script posterior a la instalación que usa elrm -rf
comando, podrá ejecutar eserm
comando sin necesidad de cambiar nada en el paquete npm o deshabilitar la configuración de scripts posteriores a la instalación. (Por ejemplo,styled-components
usa elrm
comando en sus scripts posteriores a la instalación)Si solo quieres usar el
rm
comando, puedes usar fácilmente el bash y pasar los argumentos.Entonces, sí, puede usar el comando 'rm' en Windows.
fuente
Esto es lo que funcionó para mí:
Solo intenta disminuir la longitud del camino. es decir :: Cambiar el nombre de todas las carpetas que conducen a dicho archivo a los nombres más pequeños posibles. Diga los nombres de una letra. Continúe renombrando hacia arriba en la jerarquía de carpetas. Con esto, efectivamente reduce la longitud del camino. Ahora finalmente intente eliminar el archivo de inmediato.
fuente
También hay deltree si estás en una versión anterior de Windows.
Realmente me gusta este sitio para encontrar comandos: SS64: Del - Eliminar archivos
fuente
del / s / q directorytobedeleted
fuente