Ms-Dos - Borrado automático de contenido de carpetas

 
Vista:
sin imagen de perfil

Borrado automático de contenido de carpetas

Publicado por juan (3 intervenciones) el 20/03/2017 19:19:49
Hola a todos y gracias por su ayuda. Me podrían decir como hacer lo siguiente:
Un script que entre a una carpeta determinada, llamada TRANSFER
Luego, ahí dentro, hay 30 carpetas con nombres A, B, C, D y en cada carpeta (A, B, C) hay otras carpetas.
Lo que necesito es que se borren los archivos que están dentro de las carpetas (A,B,C), pero que no borren las carpetas que hay dentro de A, B, C ( A1, A2, A3, B1, B2, B3, etc)
La estructura es la siguiente
D:\ALMACEN\TRANSFER\A
D:\ALMACEN\TRANSFER\B
D:\ALMACEN\TRANSFER\C
D:\ALMACEN\TRANSFER\D
D:\ALMACEN\TRANSFER\E
Las letras A, B, C... son nombres de personas y cada uno guarda cosas ahi, pero necesito borrar el contenido de las carpetas que tienen dentro pero no las carpetas.
Muchas gracias por la ayuda y cualquier cosa que no se entienda, la puedo volver a explicar
En lo posible un .bat
Gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Borrado automático de contenido de carpetas

Publicado por Antoni Masana (811 intervenciones) el 21/03/2017 07:02:14
Seria un comando tal que asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@ECHO OFF
CD /D D:\Almacen
IF %ErrorLevel% == 1 goto :Error
 
For /D %%a in (*) DO (
    CD "\Almacen\%%a"
    IF %ErrorLevel% == 0 DEL /S /Q *.*
)
goto :EOF
 
:Error
    echo.
    echo.ERROR - No puedo acceder al directorio D:\Almacen
    echo.
    goto :EOF

Esto realiza la limpieza.

AVISO: Esto es muy importante: antes de probarlo yo haría dos cambios y una prueba.

1º. Línea 1 cambiar @ECHO OFF por @ECHO ON

2º. Linea 7 cambiar IF %ErrorLevel% == 0 DEL /S /Q *.* por IF %ErrorLevel% == 0 ECHO DEL /S /Q *.*

Ejecutar el BAT que voy a llamar Limpia.bat asi:

1
C:\> Limpia.bat >C:\Temp\Limpia.txt

Cuando finalice verifica que hace lo que quieres que haga revisando el Limpia.txt, con estos cambios no ha borrado los ficheros pero has podido verificar si funcionada corrrectamente.

Un fallo puede suponer la perdida de todo el disco.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Borrado automático de contenido de carpetas

Publicado por juan (3 intervenciones) el 21/03/2017 15:22:00
Muchas gracias por su respuesta.
No entiendo lo de llamar al archivo de esta manera...
C:\> Limpia.bat >C:\Temp\Limpia.txt
Gracias,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Borrado automático de contenido de carpetas

Publicado por juan (3 intervenciones) el 21/03/2017 15:54:13
Agrego comentario, el archivo se llamara limpia.bat, pero donde lo debo poner? dentro de temp o en la raiz del C:? o directamente en donde quiero que borre. He probado todo eso y no borra. Con las modificaciones quedaria asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@ECHO ON
CD /F F:\TRANSFER
IF %ErrorLevel% == 1 goto :Error
 
For /F %%a in (*) DO (
    CD "\TRANSFER\%%a"
    IF %ErrorLevel% == 0 ECHO DEL /S /Q *.*
)
goto :EOF
 
:Error
    echo.
    echo.ERROR - No puedo acceder al directorio F:\TRANSFER
    echo.
    goto :EOF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Borrado automático de contenido de carpetas

Publicado por Antoni Masana (811 intervenciones) el 22/03/2017 07:05:42
El comando CD cambia de directorio. Usando el parámetro /D además cambia de disco.

Ver:
1
C:\>CD /?

El comando FOR tiene varios formatos y parámetros y uno de ellos es el /D para que lea los directorios.

Ver:
1
C:\>FOR /?


El BAT lo puedes copiar en el directorio TRANSFER o en el directorio Temporal o en una ruta del PATH.

Ver:
1
C:\>SET PATH

Si el directorio donde lo copias no esta en el PATH deberás llamarlo con la ruta.

Ver:
1
C:\> C\Temp\Limpia

Si lo copias en el directorio Transfer lo llamas asi
1
D:\TRansfer>Limpia


Versión de prueba:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@ECHO ON
 
SET RUTA=D:\ALMACEN\TRANSFER
 
SET Orig=%CD%
 
CD /D %Ruta%
   IF %ErrorLevel% == 1 goto :Error
 
For /D %%a in (*) DO (
    CD "%Ruta%\%%a"
    IF %ErrorLevel% == 0 ECHO DEL /S /Q *.*
)
cd /D %Orig%
goto :EOF
 
:Error
    echo.
    echo.ERROR - No puedo acceder al directorio %Ruta%
    echo.
    goto :EOF

Con esta versión creada un fichero con la ejecución del BAT viendo linea a linea sin borrar y puedes ver si se ejecuta bien

Un ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
C:\Tmp>CD /D D:\ALMACEN\TRANSFER
 
D:\ALMACEN\TRANSFER>IF 0 == 1 goto :Error
 
D:\ALMACEN\TRANSFER\Alberto>For / %a in (*) DO (
CD "D:\ALMACEN\TRANSFER\Alberto"
 IF 0 == 0 ECHO DEL /S /Q *.*
)
 
D:\ALMACEN\TRANSFER\Jose>(
CD "D:\ALMACEN\TRANSFER\Jose"
 IF 0 == 0 ECHO DEL /S /Q *.*
)
DEL /S /Q *.*
 
D:\ALMACEN\TRANSFER\Jose>(
CD "D:\ALMACEN\TRANSFER\Mariano"
 IF 0 == 0 ECHO DEL /S /Q *.*
)
DEL /S /Q *.*
 
D:\ALMACEN\TRANSFER\Mariano>(
CD "D:\ALMACEN\TRANSFER\Martin"
 IF 0 == 0 ECHO DEL /S /Q *.*
)
DEL /S /Q *.*
 
D:\ALMACEN\TRANSFER\Martin>(
CD "D:\ALMACEN\TRANSFER\Pedro"
 IF 0 == 0 ECHO DEL /S /Q *.*
)
DEL /S /Q *.*
 
D:\ALMACEN\TRANSFER\Pedro>goto :EOF


Con esta versión limpiaras los directorios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@ECHO OFF
 
SET RUTA=D:\ALMACEN\TRANSFER
 
SET Orig=%CD%
 
CD /D %Ruta%
   IF %ErrorLevel% == 1 goto :Error
 
For /D %%a in (*) DO (
    CD "%Ruta%\%%a"
    IF %ErrorLevel% == 0 DEL /S /Q *.*
)
cd /D %Orig%
goto :EOF
 
:Error
    echo.
    echo.ERROR - No puedo acceder al directorio %Ruta%
    echo.
    goto :EOF

Para cambiar el directorio donde lo quieres ejecutar solo debes modificar la línea:

1
SET RUTA=D:\ALMACEN\TRANSFER

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar