elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Sumarle 1 mes a la fecha actual en batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sumarle 1 mes a la fecha actual en batch  (Leído 9,761 veces)
scalverth

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Sumarle 1 mes a la fecha actual en batch
« en: 20 Septiembre 2012, 15:42 pm »

Estoy tratando de ver la forma de hacer un script que a la fecha actual le sume un mes y el resultado se guarde en in archivo.txt, el problema me aparece por ejemplo con el mes 12, encontré un código en la siguiente web http://multingles.net/docs/jmt/sumdias.htm

Código:
@echo off
setlocal ENABLEEXTENSIONS
call :dias %1
set /a j+=%2
call :inc %j%
echo %dd%/%mm%/%yy%
endlocal
goto :EOF

:dias
for /f "tokens=1,2,3 delims=-/." %%a in ("%1") do (
   set dd=%%a&set mm=%%b&set yy=%%c)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
goto :EOF

:inc
set /a a=%1+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
goto :EOF

Y al final del código explica su forma de uso:
Si lo llamamos por ejemplo inc_fecha.cmd, la manera de invocarlo será:

inc_fecha  fecha  ndias

fecha: admite el formato:  dd.mm.aaaa, dd-mm-aaaa o dd/mm/aaaa
El resultado sumar los "ndias" tecleados a la fecha. (admite signo para restar días)
NOTA: la rutina es exacta teniendo presente la regla de bisiestos en centenarios.

Pero no me da el resultado deseado, alguien puede ayudarme por favor.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Sumarle 1 mes a la fecha actual en batch
« Respuesta #1 en: 20 Septiembre 2012, 16:05 pm »

¿Porqué dices que no te funciona con el mes de Diciembre?

Código:
C:\>"Archivo.bat" "20-12-2012" "12"
01/01/2013

C:\>"Archivo.bat" "20-12-2012" "-12"
08/12/2012

Saludos


« Última modificación: 20 Septiembre 2012, 16:08 pm por EleKtro H@cker » En línea



scalverth

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Sumarle 1 mes a la fecha actual en batch
« Respuesta #2 en: 20 Septiembre 2012, 18:16 pm »

El problema se me presenta al usar el comando de la siguiente manera:
Código:
C:\>"Archivo.bat" "%date%" "12"
El resultado es 02/10/2012, o sea me esta sumando 12 días, no 12 meses.
Tendré que ingresar la fecha de otra manera (20-12-2012) o hay que hacer algún cambio al código?
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Sumarle 1 mes a la fecha actual en batch
« Respuesta #3 en: 20 Septiembre 2012, 21:15 pm »

El problema se me presenta al usar el comando de la siguiente manera:
me esta sumando 12 días, no 12 meses.

Pero es que la función de ese script es sumar días, no meses, en el mismo título lo pone bien claro :-\.
Citar
Mediante fichero batch: sumar dÍas a una fecha
Funcionar, funciona...


A ver si este code que hago te sirve (Además de sumar los meses, modifica la fecha del PC con la nueva fecha generada):

PD: No es perfecto al calcular la diferencia de los días (Ej. Febrero)

Código:
@Echo off

:: By Elektro H@cker

REM Call :ADD_MONTH [FECHA] [MESES]
REM
REM Ejemplo:

Call :ADD_MONTH 01-01-2012 12
Call :ADD_MONTH 31-01-2013 1

Pause&Exit

::::::::::::::::::::::::::::::::::::

:ADD_MONTH
Setlocal enabledelayedexpansion

Set "Current_Date=/%DATE%" & Set "Current_Date=!Current_Date:/0=/!" & Set "Current_Date=!Current_Date:~1!"

Set "Custom_Date=-%~1" & Set "Custom_Date=!Custom_Date:-=/!"  & Set "Custom_Date=!Custom_Date:.=/!" & Set "Custom_Date=!Custom_Date:/0=/!" & Set "Custom_Date=!Custom_Date:~1!"

For /F "Tokens=1-3 delims=/" %%A in ('Echo "%Custom_Date%"') DO (Set /A "DD=%%A", "MM=%%B", "YYYY=%%C", "X=%~2")

For /L %%# in (1,1,%X%) DO (
Set /A "COUNT+=1"
If "!MM!" EQU "12" (Set /A "MM=0, YYYY+=1", "COUNT+=0")
Set /A "MM+=1"
)

Echo Fecha actual     : %Current_Date%
Echo Fecha introducida: %Custom_Date%
Echo Agregar meses    : %~2


Echo %DD%/%MM%/%YYYY% | DATE >NUL && Echo Nueva fecha      : %DD%/%MM%/%YYYY% | MORE || (Call :Retry)
ENDLOCAL
Goto:EOF

:Retry
For /L %%# in (1,1,31) DO (
set /A "DD-=1"
Echo !DD!/%MM%/%YYYY% | DATE >NUL && Echo Nueva fecha      : !DD!/%MM%/%YYYY% | MORE && Goto:EOF
)



Saludos.
« Última modificación: 20 Septiembre 2012, 21:18 pm por EleKtro H@cker » En línea



scalverth

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Sumarle 1 mes a la fecha actual en batch
« Respuesta #4 en: 20 Septiembre 2012, 22:10 pm »

Muchas gracias por darme la solución, esto es lo que estaba necesitando.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
batch para copia de archivos asignandole la fecha actual como nombre
Scripting
lcarbajal_tay 2 4,975 Último mensaje 22 Febrero 2008, 01:01 am
por lcarbajal_tay
Adelantar 2 dias la fecha actual
Programación Visual Basic
Juandi90 6 3,396 Último mensaje 11 Noviembre 2010, 07:01 am
por Juandi90
¿Me podes ayudar con la fecha actual?
Programación C/C++
joaco97 1 2,151 Último mensaje 29 Abril 2013, 03:31 am
por joaco97
validar una fecha que no se pase del dia actual
PHP
luiferrr 2 3,413 Último mensaje 12 Enero 2014, 21:02 pm
por engel lex
Constructor por defecto con la fecha actual
Programación C/C++
Katniss 4 2,500 Último mensaje 23 Febrero 2016, 18:19 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines