BandaAncha.eu

Comunidad de usuarios
de fibra, móvil y ADSL

Eliminar contenido de directorio (pero no el propio directorio)

crackman

Quiero hacer un bat que elimine el contenido de un directorio (incluidos los subdirectorios) pero que no haga desaparecer al propio directorio "raíz"·.

Es decir, dejar vacío X:\DIRECTORIO\, pero que éste no deje de existir.

Todo esto sería en Windows XP.

Salu2 y gracias!

Este tema está cerrado a nuevas respuestas. Abre un nuevo tema para retomar la conversación.
BocaDePez
BocaDePez

Raíz sólo hay uno y en tu caso sería X:\

Has buscado a un del recursivo? mira en la ayuda del ms-dos, que además, está en castellano

🗨️ 3
BocaDePez
BocaDePez

A ver, con raíz me refería a DIRECTORIO, no a la raíz real. es decir, quiero eliminar el contenido del directorio, pero no a él mismo.

En la ayuda del DOS eché un ojo (y en Google) antes de postear, pero solo veo la forma de eliminar el directorio completo, y yo quiero dejarlo vacío, pero no eliminarlo a él.

🗨️ 2
vukits

en principio tendrías que hacer un batch, con un parametro, que sería más o menos:

 cd $1
 rd /s /q *

¿cuál es el problema?.... que la 2ª linea funciona en *NIX, pero no tengo ni pajolera idea de cómo se hace en winbugs :(

saludos

🗨️ 1
BocaDePez
BocaDePez

Syntax

Removes (deletes) a directory.

RMDIR [drive:]path
RD [drive:]path

Windows 2000 and Windows XP Syntax.

RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

/SRemoves all directories and files in the specified directory in addition to the directory itself. Used to remove a directory tree.
/QQuiet mode, do not ask if ok to remove a directory tree with /S.

Ese es el funcionamiento del RD en Windows/DOS.

No vale el "*" que utilizaste en tu ejemplo. Según eso, en Windows/DOS el comando borra el directorio también, pero no vale para "vaciarlo" y dejar el directorio "padre" existente.

Salu2 y gracias!

vukits

EDIT: jeje, corregido la no existencia del directorio con un if :P .. no os riais de mi :D

 @echo off

 if EXIST %1 (

 set OLDDIR=%CD%

 cd %1

dir /b > mifichero

 for /f "tokens=*" %%a in (mifichero) do rd /s /q %%a

 del /f /q *.*

 echo Directorio %1 Borrado

 @echo off

 cd /d %OLDDIR%

 )

 @echo off

 if not EXIST %1 echo Directorio %1 No Existe

es un .bat con un sólo parametro: la carpeta que quieres vaciar... hace una lista de los elemenos mediante un for..

lo único de lo que tengo duda es cómo reaccionará dir /b con muhcisimos elementos. hm...

saludos

PD: la piezas de cdigo las he sacado de Guguel...

🗨️ 1
Blue77
1

Es una muy buena opción, sólo añadir que la última línea tendría que ir al principio, si no existe, que no siga leyendo.

Sobra un @echo off, con el del principio es suficiente.

Algo así como

 @echo off

 if "%1"=="" goto ERROR1

 if not exist %1\NUL then goto ERROR2

 goto NEXT

 :ERROR1

 echo Error, no ha introducido ningún parámetro

 goto END

 :ERROR2

 echo Error, el directorio introducido como parámetro es incorrecto

 goto END

 :NEXT

 for %%q in (%1) do del %%q

 for %%q in (%1) do deltree %%q

 rem Primero he eliminado los archivos

 rem Después he eliminado los directorios y los archivos y subdirectorios contenidos en esos directorios

 rem manteniendo en todo momento el padre

 :END

No creo que funcione ni de coña, sería cuestión de cambar alguna cosa.

Espero que con estas respuestas te estemos ayudando a hacer un proyecto propio crackman, y no a responder algun ejercicio de tu academia, centro educativo, facultad...

LIBELULA

Lo más rápido aunque no se ajuste a tus premisas es:

rd /s [unidad:]directorio

md [unidad:]directorio

Lo eliminas y lo recreas. Tiempo de proceso mínimo.

Otra cosa sería que tuvieras que dejar algún contenido en ese directorio. ¡Qué complicaciones!

La solucion a tu problema es:

cd directorio

rd /s .

Porque no puedes borrarte a ti mismo

BocaDePez
BocaDePez

Hola Blue77 tu respuesta es muy rapida y consisa y problemas, lo mejor es lo mas facil, gracias me ayudo