Autor
|
Tema: Sumarle 1 mes a la fecha actual en batch (Leído 9,761 veces)
|
scalverth
Desconectado
Mensajes: 21
|
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@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
Mensajes: 9.878
|
¿Porqué dices que no te funciona con el mes de Diciembre? 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
Mensajes: 21
|
El problema se me presenta al usar el comando de la siguiente manera: 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
Mensajes: 9.878
|
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 . 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) @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
Mensajes: 21
|
Muchas gracias por darme la solución, esto es lo que estaba necesitando.
|
|
|
En línea
|
|
|
|
|
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
|
22 Febrero 2008, 01:01 am
por lcarbajal_tay
|
|
|
Adelantar 2 dias la fecha actual
Programación Visual Basic
|
Juandi90
|
6
|
3,396
|
11 Noviembre 2010, 07:01 am
por Juandi90
|
|
|
¿Me podes ayudar con la fecha actual?
Programación C/C++
|
joaco97
|
1
|
2,151
|
29 Abril 2013, 03:31 am
por joaco97
|
|
|
validar una fecha que no se pase del dia actual
PHP
|
luiferrr
|
2
|
3,413
|
12 Enero 2014, 21:02 pm
por engel lex
|
|
|
Constructor por defecto con la fecha actual
Programación C/C++
|
Katniss
|
4
|
2,500
|
23 Febrero 2016, 18:19 pm
por ivancea96
|
|