Ms-Dos - agregar dia en un bat

 
Vista:

agregar dia en un bat

Publicado por PabloF (6 intervenciones) el 26/09/2016 15:21:47
Hola todos.

Estoy haciendo un respaldo en DOS y quiero que al nombre de la carpeta le agregue el dia ( nombre o numero) asi mantengo la semana sin tener un registro por fecha.
por ejemplo DatosLun, DatosMar,.... DatosDom, aunque que seria en ingles
o puede ser Datos1,..... Datos7.

espero se entienda.
gracias
Saludos
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

agregar dia en un bat

Publicado por Antoni Masana (811 intervenciones) el 27/09/2016 07:26:58
Buenos días,

En este foro hay infinidad de respuestas a esta pregunta o variantes de ella.

Lo de poner el nombre del día déjalo correr porque el DATE no lo sabe o no lo dice.

Lo más simple es ponerle la fecha y guardar los ultimos n días.

C:\Datos.2016.09.24
C:\Datos.2016.09.25
C:\Datos.2016.09.26
C:\Datos.2016.09.27

Para crear los directorios:

1
2
3
4
5
6
7
@echo off
 
set Any=%Date:~8%
set Mes=%Date:~3,2%
set Dia=%Date:~0,2%
 
MD C:\Datos.20%Any%.%Mes%.%Dia%

o

1
2
3
4
5
6
7
@echo off
 
set Any=%Date:~6%
set Mes=%Date:~3,2%
set Dia=%Date:~0,2%
 
MD C:\Datos.%Any%.%Mes%.%Dia%

La diferencia esta en tomar lo dos o cuatro dígitos del año.


Ejemplo de BAT para guardar los últimos 5 días

1
2
3
4
5
@ECHO OFF
DIR C:\Datos.20* /B /A:D >Temp_1
SORT /R <Temp_1 >Temp_2
FOR /F "skip=5" %%a in (Temp_2) do RD /S /Q %%a
DEL Temp_1 Temp_2

o

1
2
3
4
@ECHO OFF
DIR C:\Datos.20* /B /A:D /O-N >Temp_1
FOR /F "skip=5" %%a in (Temp_1) do RD /S /Q %%a
DEL Temp_1

o

1
2
@ECHO OFF
FOR /F "skip=1" %a IN ('DIR C:\Datos.20* /O-N /B') DO RD /S /Q %%a

Particularmente el segundo por que te ahorras el SORT y ya lo hace el propio DIR.

En el tercero te ahorras el SORT y crear ficheros temporales, pero tengo poca fe en este sistema operativa.

Consulta la ayuda del FOR para más información: FOR /?

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

agregar dia en un bat

Publicado por Pablof (6 intervenciones) el 27/09/2016 13:42:14
Hola,Gracias por contestar.
Yo ya revise todos los comentarios sobre este tema, pero no encontré uno que me sirva, por eso es que pregunto.
Y los ejemplos que sugieres no me sirven, ya lo tengo de esa forma, pero al grabar todos los días un registro siempre hay que estar pendientes de limpiar los mas antiguos porque el respaldo es en un pendrive y se llena. es por eso que quiero ponerle el dia y que se valla reemplazando cada semana.
Muchas gracias por preocuparte.
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
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

agregar dia en un bat

Publicado por Antoni Masana (811 intervenciones) el 28/09/2016 08:21:03
Si ejecutas el BAT de limpieza repetidas veces el mismo dia solo te dejara 5 días. es más si haces esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
 
set Any=%Date:~8%
set Mes=%Date:~3,2%
set Dia=%Date:~0,2%
set Direc=C:\Datos.20%Any%.%Mes%.%Dia%
 
IF EXIST %Direc%\nul goto Copia
 
   MD C:\Datos.20%Any%.%Mes%.%Dia%
   DIR C:\Datos.20* /B /A:D /O-N >Temp_1
   FOR /F "skip=5" %%a in (Temp_1) do RD /S /Q %%a
   DEL Temp_1
 
:Copia
   Copy C:\Documentos\*.* %Derec%
   GOTO :EOF

No importa cuantas veces al día realices la copia, solo conservaras los 5 últimos días y el directorio del día solo lo crea la primera vez que se ejecuta con lo que conserva todos y cada uno de los ficheros copiados.

NOTA:

En el DIR los parámetros de ordenar mejor poner /O-D porque así ordena por fecha de creación y funciona bien siempre.
Tal como esta si creas el directorio como C:\Datos-%Dia% tendrás un problema cuando cambie el mes.

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

agregar dia en un bat

Publicado por Pablo F (6 intervenciones) el 28/09/2016 13:17:24
Muchas gracias Antoni,
Lo pruebo y te comento.
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

agregar dia en un bat

Publicado por Pablof (6 intervenciones) el 29/09/2016 13:56:15
Hola,
Sabes que me graba bien los dias pero sigue, pasados los 5 dias no comienza a borrar.
Esto es lo que hice, a ver si te das cuenta de donde me equivoco.

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
@echo off
 
 
set Anio=%Date:~8%
 
set Mes=%Date:~3,2%
 
set Dia=%Date:~0,2%
 
set DirecM=.20%Anio%.%Mes%.%Dia%
 
 
IF EXIST F:\Respaldos\MDatos.20%Anio%.%Mes%.%Dia%\nul goto CopiaM
 
 
   MD F:\Respaldos\MDatos.20%Anio%.%Mes%.%Dia%
 
   DIR F:\Respaldos\MDatos.20* /B /A:D /O-N >Temp_1
 
   FOR /F "skip=5" %%a in (Temp_1) do RD /S /Q %%a
 
   DEL Temp_1
 
 
:CopiaM
 
   copy "C:\Asistente\Datos\Web\*.EXP" "F:\Respaldos\MDatos%DirecM%\*.EXP"
   copy "C:\Asistente\Datos\Web\*.GIF" "F:\Respaldos\MDatos%DirecM%\*.GIF"
 
 
   GOTO :EOF

y genera en
F:\Respaldos\MDatos.2016.09.28
F:\Respaldos\MDatos.2016.09.29
F:\Respaldos\MDatos.2016.09.30
F:\Respaldos\MDatos.2016.10.01
F:\Respaldos\MDatos.2016.10.02
F:\Respaldos\MDatos.2016.10.03
F:\Respaldos\MDatos.2016.10.04
F:\Respaldos\MDatos.2016.10.05

lo probe cambiando la fecha del pc.

gracias
Salu2
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

agregar dia en un bat

Publicado por Pablof (6 intervenciones) el 29/09/2016 15:32:22
Lo fui probando manualmente en linea de comando dos, y cuando crea el Temp_1 le esta flatando que grabe la direccion completa,
o sea en Temp_1 graba MDatos.2016.09.28 y deberia grabar F:\Respaldos\MDatos.2016.09.28.

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

agregar dia en un bat

Publicado por pablof (6 intervenciones) el 30/09/2016 16:58:43
No he podido solucionar esto, no consigo que agregue la ruta dentro de Temp para que elimine.

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
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

agregar dia en un bat

Publicado por Antoni Masana (811 intervenciones) el 30/09/2016 18:12:10
Hay dos formas de hacerlo para que funcione

1
2
3
4
5
6
7
DIR F:\Respaldos\MDatos.20* /B /S /A:D /O-N >Temp_1
FOR /F "skip=5" %%a in (Temp_1) do RD /S /Q %%a
 
o
 
DIR F:Respaldos\MDatos.20*[/b] /B /A:D /O-N >Temp_1
FOR /F "skip=5" %%a in (Temp_1) do RD /S /Q F:\Respaldos\%%a

La primera: Con la opción del DIR /S devuelve la ruta completa. Ahora te devuelve una ruta relativa y con el parámetro una ruta absoluta.

La segunda: En el momento de borrar poner la ruta que falta.


A veces puede no interesar el parámetro /S porque ademas de poner la ruta absoluta y no la relativa busca en los sub directorios

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