2011-01-21 21 views
30

Tengo la estructura del directorio/foo/bar/fooBar/... Quiero escribir un comando de Windows donde pueda mencionar el directorio path to foo y borre todos los archivos y el directorio recursivamente en/foo, pero NO debería borrar el directorio foo.Cómo eliminar archivos recursivamente

He estado usando rmdir /q /s [path to foo] pero este comando también elimina el directorio foo. Avíseme si hay algún comando para lograr esto.

+0

¿Qué pasaría si a cd/ruta/a/foo antes de realizar rmdir? – BigMike

+3

del/s * .xml Funciona en Windows 10 – JenonD

+0

Posible duplicado de [¿Qué pasó con deltree, y cuál es su reemplazo?] (Http://stackoverflow.com/questions/338895/what-ever-happened-to- deltree-and-whats-its-replacement) –

Respuesta

42
rd /s /q /path/to/foo 
md /path/to/foo 
+0

Tenía un montón de carpetas anidadas y archivos con algunos que solo eran de lectura. Esto eliminó todos ellos excepto el de solo lectura, que es lo que esperaba. Esto fue mejor que la funcionalidad de Windows Server 2003 que detendría el proceso cuando encontrara un archivo de solo lectura. ¡Gracias! –

2

deltree/foo/* debería funcionar bien.

+1

Tengo la mala suerte de no tener el comando deltree en Windows XP – Akshay

+0

Luego debe seguir con la solución de @ Ferruccio. –

+0

No funciona en win7 x64 – m1m1k

7
del /f /s /q DirectoryWhichContainsFilesToDelete/\* 

Esto eliminará todos los archivos de la carpeta DirectoryWhichContainsFilesToDelete sin borrar la carpeta. Diviértete :)

+3

No elimina ** directorios ** dentro de DirectoryWhichContainsFilesToDelete. –

+0

Esto funcionó para mis propósitos. –

1

He usado esto en un archivo por lotes en el pasado. Utiliza un ciclo for para navegar por la estructura del directorio.

Aquí elimino los subdirectorios cvs de un árbol, necesarios al copiar de una rama a otra.

@echo off 
if /I exist CVS. rd CVS /s /q >nul 
for /F %%z in ('dir cvs /ad /s /b') do echo %%z && rd /s /q %%z 
echo Batchfile %0 is complete 
6

Me había estado rascando la cabeza en este caso también. Es bastante fácil crear un bucle for que use rmdir, pero deja carpetas que tienen espacios en los nombres largos. Es posible manipular una lista de directorios y obtener los nombres de archivos 8.3, pero aquí hay una solución mucho más simple.

Cree una carpeta vacía; Se eliminarán

robocopy \empty_folder \folder_with_sub_folders /PURGE 

todas las subcarpetas & archivos.

3

Estaba buscando un comando simple para eliminar todos los archivos de un directorio recursivamente pero sin modificar la estructura del directorio. Por lo tanto, tal vez esto podría ser interesante;)

for /f "delims=" %i in ('dir /B /S /A:-DH') do @del /F /Q /A:H "%i" 

'dir/B/S/R: -D' El comando lista solo los archivos (/ A: -D) en el directorio actual de forma recursiva (/ S) sin ' dir 'informe resumen (/ B). El 'for' recorre cada línea completa (/ delims =) y ejecuta el comando delete, forzado y silencioso. También utilicé el marcador oculto (/ H) para listar y eliminar archivos misteriosos (por ejemplo, thumbs.db).

+0

esto funcionó para mí también, tuve que eliminar ciertos archivos que coinciden con un comodín recursivamente en todas las subcarpetas, entonces usé 'for/f" delims = "% i in ('dir/b/ad/s" P: \ Systems \ ALPS \ ~ $ PS * "') do @del/F/Q/A: H"% i "' y ¡wow, funcionó! –

4
del X /f /s /q 
rd X /s /q 

esto eliminará el directorio ROOt sin embargo. hacerlo de nuevo con

md X 

o haga una copia primero.

de lo contrario tendrá que hacer por lotes funkiness

dir X /ad /b 

le dará una lista de los subdirectorios inmediatos de X.se puede trabajar el resto

+0

funciona en win7 x64. ¡Gracias! – m1m1k

0

Para evitar el borrado del directorio foo cambio de directorio tratar a foo antes de la elimine tales como:

cd c: \ foo rd/s/QC: \ foo

Esto eliminará todos los archivos y carpetas bajo foo pero NO foo. Se mostrará un mensaje de error como sigue "El proceso no puede acceder al archivo porque lo está utilizando otro proceso".

1

Trate de usar Powershell:

powershell -Command "Remove-Item '\foo\*' -Recurse -Force" 
Cuestiones relacionadas