Ms-Dos - Comprimir archivo con fecha del día anterior

 
Vista:
sin imagen de perfil

Comprimir archivo con fecha del día anterior

Publicado por Lena (1 intervención) el 13/08/2015 19:01:54
Hola
Soy principiante en MS-Dos y necesito crear un BAT que me comprima el contenido de una carpeta agregando la fecha del día anterior, lo hice así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
 
SET/A HOY=%date:~0,2%%date:~3,2%%date:~6,4%
 
::Restamos al dia un uno para obtener el dia anterior....
SET /A dia=%date:~0,2% - 1
 
SET mes=%HOY:~2,2%
SET/A anio=%date:~6,4%
 
::comprobamos si el valor de la resta es menor o igual al numero 9...
::Entonces le colocamos un 0 delante, ejemplo 01.02.03..,09
 
if %dia% LEQ 9 set dia=0%dia%
 
rar A -df Produccion_%dia%-%mes%-%anio%.rar *.DMP *.log

Todo funciona bien, pero cuando llegue el primero de mes o el primero de enero, en lugar del 31, 30 ó 28, me pondrá 00 en el día...

Traté de arreglarlo con una función (o GOTO), también intenté anidar IFs pero no me lo está tomando de ninguna forma... ¿Cómo lo arreglo?

Agrego el código erróneo:

1
2
3
4
5
6
7
8
9
10
11
@echo on
SET/A HOY=%date:~0,2%%date:~3,2%%date:~6,4%
::Se declaran las variables dia y mes como varchar
SET dia=%date:~0,2%
SET mes=%date:~3,2%
SET anio=%date:~6,4%
echo Produccion_%dia%-%mes%-%anio%
SET /A dia=%dia% -01
if %dia% LEQ 9 set dia=0%dia%
if %dia% EQU 00 goto(CONTROLMESES)
rar A -df Produccion_%dia%-%mes%-%anio%.rar *.DMP *.log
: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
:CONTROLMESES
pause[/code]
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
sin imagen de perfil

Comprimir archivo con fecha del día anterior

Publicado por Lena (2 intervenciones) el 18/08/2015 18:58:34
Tuve que meterle una validación extra dentro de la función, porque el if anterior no lo respetaba...
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