Ms-Dos - Renombrar archivo agregando fecha del día anterior

 
Vista:

Renombrar archivo agregando fecha del día anterior

Publicado por Luis Cruz (3 intervenciones) el 18/06/2014 18:47:48
Hola Amigos, les explico mi caso: tengo un bat para renombrar unos archivos de respaldo diario el cual se renombra agregándole la fecha del día actual, ahora por cambio de procedimientos en los respaldos necesito renombrarlo con la fecha del día anterior y aquí si ando un poco perdido, si alguien me puede ayudar mostrándome la forma correcta de como hacerlo.

Tengo el siguiente proceso:

for /f "tokens=1-4 delims=/ " %%a in ('date /T') do Set fecha=%%a%%b%%c

rename FUTUROSIS_DAT.BAK FUTUROSIS_DAT_%fecha%.BAK

resultado final: FUTUROSIS_DAT_18062014.BAK

pero quisiera poder renombrarlo con la fecha del día anterior, agradecere su respuestas.

Atte.
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 A.H.H.

Renombrar archivo agregando fecha del día anterior

Publicado por A.H.H. (216 intervenciones) el 18/06/2014 22:57:45
Hola esto podría servir cambiamos la línea del for restándole el 1 al dia

1
2
3
4
5
6
7
for /f "tokens=1-4 delims=/ " %%a in ('date /T') do (set /a dia=%%a-1&set mes=%%b&set anio=%%c)
 
set fecha=%dia%%mes%%anio%
 
rename FUTUROSIS_DAT.BAK FUTUROSIS_DAT_%fecha%.BAK
 
pause

PERO....viene el primer problema de ir hacia atrás que es cuando el dia valga 9 o menos......ya que la fecha son dos dígitos en el dia y al hacer operaciones matemáticas desaparece el 0 ......se podría
corregir con esta línea antes de set fecha=%dia%%mes%%anio%



1
2
if %dia% LEQ 9 set dia=0%dia%
set fecha=%dia%%mes%%anio%

lo que hace es poner un 0 delante si es menor o igual a 9.......


.....PERO nos viene el segundo problema de ir hacia atrás ...


..que cuando dia valga 00 puesto que se le ha restado un 1 al dia uno del mes ¿¿ que ponemos que valga la variable %dia% 31? 0 30??? 0 28????

hay ya tendríamos que pensar en una rutina que nos dijera que si el %mes% =06 que sea %dia% = 30 puesto que junio tiene 30 días..........
y que si %mes% = 12 pues %dia%=31 puesto que diciembre es de 31 etc...

todo esto seria cuando vas a renombrar un archivo y estas en el dia 01 del mes, al restar quedaría 00 ¿Cómo sabes cuanto valdría la variable %dia% para que no cogiera el valor 00 sino 30 31 28 ???




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

Renombrar archivo agregando fecha del día anterior

Publicado por Luis Cruz (3 intervenciones) el 19/06/2014 00:19:18
Gracias por el aporte A.H.H.
me ha servido mucho y si tienes razón en cuanto a los días de 1 solo dígito y el año, probare haber si encuentro la manera de solventarlo, o si tuvieses otra opción de como realizarlo siempre agradeceré siempre el aoprte.
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 A.H.H.

Renombrar archivo agregando fecha del día anterior

Publicado por A.H.H. (216 intervenciones) el 20/06/2014 21:45:16
Hola de nuevo Luis Cruz

el siguiente código que te expongo corrige varias cosas, por ejemplo si tienes un archivo para renombrar con fecha
01012014 al renombrarlo te tendría que sacar 31122013 no? osea el código tendría que restar un 1 al anio y también saber que meses tiene 30 días que meses 31 y cual 28, también si tenemos 01012014 tenemos que hacer que ponga el mes sea diciembre osea 12,,,bueno lo único que faltaría seria calcular cuando es año bisiesto por lo demás funciona bien...
he echo pruebas y he ido cambiando la variable %%a y la variable %%b por números de días y meses para simular distintas fechas y poder corregir fallos.....


He hecho que los meses valgan su numero de mes para asi poder saber si coincide con el mes en curso
y poder saber cuales son de 30 y de 31 y 28 están separados por grupos


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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
@echo off
for /f "tokens=1-4 delims=/ " %%a in ('date /T') do (set /a dia=%%a-1&set mes=%%b&set anio=%%c)
 
if %dia% LEQ 9 set dia=0%dia%
 
if %dia% EQU 00 call :CONTROLMESES
 
set fecha=%dia%%mes%%anio%
rename FUTUROSIS_DAT.BAK FUTUROSIS_DAT_%fecha%.BAK
echo ok! archivo renombrado a FUTUROSIS_DAT_%fecha%.BAK
pause
 
 
:CONTROLMESES
 
set /A mes=%mes%-1
 
if %mes% LEQ 9 set mes=0%mes%
if %mes% EQU 00 set mes=12&set /A anio=%anio%-1
 
set enero=01
set febrero=02
set marzo=03
set abril=04
set mayo=05
set junio=06
set julio=07
set agosto=08
set septiembre=09
set octubre=10
set noviembre=11
set diciembre=12
 
if %febrero% EQU %mes% set dia=28
 
if %abril% EQU %mes% set dia=30
if %junio% EQU %mes% set dia=30
if %septiembre% EQU %mes% set dia=30
if %noviembre% EQU %mes% set dia=30
 
if %enero% EQU %mes% set dia=31
if %marzo% EQU %mes% set dia=31
if %mayo% EQU %mes% set dia=31
if %julio% EQU %mes% set dia=31
if %agosto% EQU %mes% set dia=31
if %octubre% EQU %mes% set dia=31
if %diciembre% EQU %mes% set dia=31
 
goto:eof


SOLO faltaría lo del año bisiesto................................
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 A.H.H.

Renombrar archivo agregando fecha del día anterior

Publicado por A.H.H. (216 intervenciones) el 21/06/2014 17:40:54
Hola de nuevo consegui una rutina para calcular el año bisiesto y asi poder saber si febrero es de 28 o tiene 29 días..
tengo que decir que todas las rutinas de código son mias menos la de controlbisiesto que la he modificado y anexado a este bat y extraido de http://www.portalhacker.net/b66/calcular-anos-bisiestos-batch-by-saster/94410/

CODIGO COMPLETO CON COMENTARIOS.
-calcula si es bisiesto o no
-resta año
-resta mes

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
@echo off
for /f "tokens=1-4 delims=/ " %%a in ('date /T') do (set /a dia=%%a-1&set mes=%%b&set anio=%%c)
call :CONTROLBISIESTO
 
if %dia% LEQ 9 set dia=0%dia%
 
if %dia% EQU 00 call :CONTROLBISIESTO&CALL :CONTROLMESES
 
set fecha=%dia%%mes%%anio%
rename FUTUROSIS_DAT.BAK FUTUROSIS_DAT_%fecha%.BAK
echo ok! archivo renombrado a FUTUROSIS_DAT_%fecha%.BAK
pause
 
:CONTROLBISIESTO
::ESTA RUTINA CONTROLBISIESTO ES CORTESIA DE SASTER.
::EL RESTO DE RUTINAS Y CODIGO ES CORTESIA DE A.H.H.
::Calcular años bisiestos en batch by saster
:a
set/a res1=%anio%/400
set/a res2=%res1%*400
if %res2%==%anio% (set var=si && goto fin) else (goto b)
:b
set/a res3=%anio%/100
set/a res4=%res3%*100
if %res4%==%anio% (set var=no && goto fin) else (goto c)
:c
set/a res5=%anio%/4
set/a res6=%res5%*4
if %res6%==%anio% (set var=si && goto fin) else (set var=no && goto fin)
:fin
GOTO:EOF
 
:CONTROLMESES
set /A mes=%mes%-1
if %mes% LEQ 9 set mes=0%mes%
if %mes% EQU 00 set mes=12&set /A anio=%anio%-1
 
::HACEMOS QUE LOS MESES VALGAN SU NUMERO DE MES PARA COMPARAR CON MES ACTUAL.
 
set enero=01
set febrero=02
set marzo=03
set abril=04
set mayo=05
set junio=06
set julio=07
set agosto=08
set septiembre=09
set octubre=10
set noviembre=11
set diciembre=12
 
 
::CONTROLAMOS SI FEBRERO ES DE 28  O  29 DIAS.
 
if %var% EQU si set bisiesto=29
if %var% EQU no set bisiesto=28
if %febrero% EQU %mes% set dia=%bisiesto%
 
 
::CONTROLAMOS LOS MESES DE 30 DIAS.
 
if %abril% EQU %mes% set dia=30
if %junio% EQU %mes% set dia=30
if %septiembre% EQU %mes% set dia=30
if %noviembre% EQU %mes% set dia=30
 
::CONTROLAMOS LOS MESES DE 31 DIAS.
 
if %enero% EQU %mes% set dia=31
if %marzo% EQU %mes% set dia=31
if %mayo% EQU %mes% set dia=31
if %julio% EQU %mes% set dia=31
if %agosto% EQU %mes% set dia=31
if %octubre% EQU %mes% set dia=31
if %diciembre% EQU %mes% set dia=31
goto:eof

SALUDOS he disfrutado mucho con este problema...
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

Renombrar archivo agregando fecha del día anterior

Publicado por Luis Cruz (3 intervenciones) el 24/06/2014 19:41:56
Saludos A.H.H.

No te había dado respuesta por cuestiones de trabajo y también que he estado haciendo pruebas, y pues si baya si que estaba complicado, pero Gracias pues si me ha servido mucho.

Gran Aporte!!!
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

Renombrar archivo agregando fecha del día anterior

Publicado por Felipe Pelegrini (3 intervenciones) el 09/03/2016 21:39:02
Olá amigo, o Script parou de funcionar dia 07/03/2016 até dia 09/03/2016...
ERRO: Número inválido. as constantes numéricas são decimais (17). hexadecimais (0x11) ou octais (021).

Alterei a data do computador para dia 10/03/2016 ele funciona....

porque? esse ano fevereiro teve 29 dias... pode ser isso?
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

Renombrar archivo agregando fecha del día anterior

Publicado por Felipe Pelegrini (3 intervenciones) el 09/03/2016 22:53:01
Esse script da erro quando executa no dia 07, 08 e 09.... nenhum mês rodou nesses dias. sabe me dizer porque?
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

Renombrar archivo agregando fecha del día anterior

Publicado por Felipe Pelegrini (3 intervenciones) el 27/01/2016 12:07:57
Bom dia Pessoal,
ANDRES H.H. não sabe a quanto tempo procuro esse script. nunca o encontrei.
todos os sites eles utilizam VBS para contornar a situação e eu sempre quis fazer em BAT.

Parabéns.... testei o script aqui e esta perfeito, da para adaptar e utilizar em tudo.
Parabéns mesmo... muito TOP. showw...

abraço.
Felipe Pelegrini
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 A.H.H.

Renombrar archivo agregando fecha del día anterior

Publicado por A.H.H. (216 intervenciones) el 27/01/2016 19:41:22
muchas gracias me alegro mucho que sirviera...




muito obrigado Estou feliz que você gostou do código ...
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