Ms-Dos - crear carpeta con fecha posterior al actual

 
Vista:

crear carpeta con fecha posterior al actual

Publicado por PHILIPS (5 intervenciones) el 19/09/2008 01:28:27
novato, solicitando de sus valiosos conocimientos

Resulta que necesito realizar un bat que cree diariamente una folder que tenga como nombre la fecha posterior al actual.

Es decir si hoy es 18 de septiembre de 2008, en lugar de que se llame el folder 180908, dicha carpeta automaticamente tenga como nombre 190908 un dia adelantado al real.

Espero que alguien pueda ayudarme

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

RE:crear carpeta con fecha posterior al actual

Publicado por Armando Nava (194 intervenciones) el 19/09/2008 16:00:05
Saludos.

No encontre algo que me sirviera en los tutoriales hasta que me encontre con esta dirección, misma que tenía la clave para hacerlo.

http://vtatila.kapsi.fi/batch_tutorial.html#set

set DD=%date:~0,2%
set MM=%date:~3,2%
set AA=%date:~8,2%
set /a DD=DD + 1

set FECHA=%DD%%MM%%AA%

mkdir %FECHA%
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

RE:crear carpeta con fecha posterior al actual

Publicado por A.H.H (43 intervenciones) el 19/09/2008 23:57:21
Hola a mi el codigo expuesto por Armando no me funciona.
Creo que mejor asi si la fecha es en español.
Ademas puedes cambiar la variable suma para que sume 1 dia ó 2 dias ó 3dias.................................

@echo off
set suma=1
set dd=%date:~0,2%
set mm=%date:~3,2%
set aa=%date:~6,4%
set /a fecha=%dd%+%suma%
mkdir %fecha%%mm%%aa%
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

RE:crear carpeta con fecha posterior al actual

Publicado por A.H.H (43 intervenciones) el 20/09/2008 00:22:08
Hola perdon tienes que poner la ultima linea entre comillas,
quedaria el codigo corregido asi:


@echo off
set suma=1
set dd=%date:~0,2%
set mm=%date:~3,2%
set aa=%date:~8,2%
set /a fecha=%dd%+%suma%
mkdir "%fecha%%mm%%aa%"
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

RE:crear carpeta con fecha posterior para Armando

Publicado por A.H.H (43 intervenciones) el 20/09/2008 20:43:11
Hola Armando tu codigo estaba bien pero me salian dos carpetas,le faltaba solo en la ultima linea la variable %FECHA% ponerla entre comillas.--> "%FECHA%"

set DD=%date:~0,2%
set MM=%date:~3,2%
set AA=%date:~8,2%
set /a DD=DD + 1

set FECHA=%DD%%MM%%AA%

mkdir "%FECHA%"


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

RE:crear carpeta con fecha posterior para Armando

Publicado por Armando Nava (194 intervenciones) el 20/09/2008 23:53:00
Saludos Andres.

Estuve probando el código, y en mi computadora si me crea el directorio tal cual

210908 ddmmaa

En otras computadoras, si envio el contenido de la variable a un archivo me sale algo como esto

echo %FECHA% > lista.txt
-------------------------------------------
2109 08
-------------------------------------------

Le añade un espacio, por eso crea dos directorios.

2109 y 08

Tal ves sea la version del windows, o algún BUG en el MS-DOS
--------------------------------------------
Si estamos usando Win XP entonces podemos usar la variable de ambiente
%DATE%

set dia=%DATE:~0,2%
set mes=%DATE:~3,2%
set anio=%DATE:~8,2%
set /a dia=dia + 1

set fecha=%dia%%mes%%anio%
mkdir %fecha%
-------------------------------------------
Ya no se produce el error, por lo menos en la computadora que use
------------------------------------------

Faltaría ver si este código funciona para fin de mes.
-------------------------------------------
La fecha actual es: 20/09/2008
Escriba la nueva fecha: (dd-mm-aa) 31/09/2008
El sistema no puede aceptar la fecha que escribió.
Escriba la nueva fecha: (dd-mm-aa)
-----------------------------------------
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

RE:crear carpeta con fecha posterior para Armando

Publicado por andres fan de jon cena (1 intervención) el 09/04/2009 18:40:48
wwe es lo mejor
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

RE:crear carpeta con fecha posterior al actual

Publicado por PHILIPS (5 intervenciones) el 23/09/2008 03:15:46
Gracias por su valiosa ayuda.
Quedo excelente
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

RE:crear carpeta con fecha posterior al actual

Publicado por Armando Nava  (194 intervenciones) el 25/09/2008 22:02:56
Saludos

Ya logre validar las fechas, hice pruebas cambiando la fechas de la computadora para fin de mes y fin de año y resultaron exitosas.

Coloque algunas cosas extras, que quiza esten de más.

Cuando nos pide el cambio de fecha, hay que darle un [ENTER], hay también unas pausas que se pueden eliminar.

set ORI=%DATE%

REM para efectuar operaciones matematicas
REM *************************************
set dd_c=%DATE:~0,1%
if %dd_c% NEQ 0 set dd=%DATE:~0,2%
if %dd_c% EQU 0 set dd=%DATE:~1,1%
set /a dd=dd + 1
set N_DD=%dd%

set mm_c=%DATE:~3,1%
if %mm_c% NEQ 0 set mm=%DATE:~3,2%
if %mm_c% EQU 0 set mm=%DATE:~4,1%
set /a mm=mm + 1
set N_MM=%mm%

set DD=%DATE:~0,2%
set AA=%DATE:~6,4%
set MM=%DATE:~3,2%
set /a YYYY=AA +1
REM ************************************

set SIGUE=%N_DD%%ORI:~2,8%
set FOLDER=%N_DD%%MM%%AA%

echo %SIGUE%
echo %FOLDER%

pause

REM Hacemos el cambio de fecha
:validar

date %SIGUE%
set ACTUAL=%DATE%

REM si la fecha es valida entonces cambia
IF %ACTUAL% EQU %SIGUE% GOTO si

REM si la fecha no es valida hay que calcularla
IF %ACTUAL% NEQ %SIGUE% GOTO no

:si
echo Cambio la fecha > valida.txt
REM Se crea carpeta
mkdir %FOLDER%
goto salir

:no
echo No hay cambio > valida.txt
REM Se debe adecuar la fecha

IF %MM% EQU 12 goto mes

REM Intentamos modificando el día
REM Se cambia a día primero y mes mas uno
set DD_ORI=01
set dd=%DD_ORI%
set SIGUE=%DD_ORI%/%N_MM%/%AA%
set FOLDER=%DD_ORI%%N_MM%%AA%
echo %sigue%
goto validar
echo ==================
pause

:mes
REM Se cambia a dia primero y mes primero
set DD_ORI=01
set MM_ORI=01
REM Se aumenta el año mas uno
set SIGUE=%DD_ORI%/%MM_ORI%/%YYYY%
set FOLDER=%DD_ORI%%MM_ORI%%YYYY%
echo "CAMBIO AÑO"
echo %SIGUE%
pause
goto validar

goto salir

:salir
date %ORI%
pause
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

RE:crear carpeta con fecha posterior al actual_val

Publicado por Armando Nava  (194 intervenciones) el 25/09/2008 22:03:18
Saludos

Ya logre validar las fechas, hice pruebas cambiando la fechas de la computadora para fin de mes y fin de año y resultaron exitosas.

Coloque algunas cosas extras, que quiza esten de más.

Cuando nos pide el cambio de fecha, hay que darle un [ENTER], hay también unas pausas que se pueden eliminar.

set ORI=%DATE%

REM para efectuar operaciones matematicas
REM *************************************
set dd_c=%DATE:~0,1%
if %dd_c% NEQ 0 set dd=%DATE:~0,2%
if %dd_c% EQU 0 set dd=%DATE:~1,1%
set /a dd=dd + 1
set N_DD=%dd%

set mm_c=%DATE:~3,1%
if %mm_c% NEQ 0 set mm=%DATE:~3,2%
if %mm_c% EQU 0 set mm=%DATE:~4,1%
set /a mm=mm + 1
set N_MM=%mm%

set DD=%DATE:~0,2%
set AA=%DATE:~6,4%
set MM=%DATE:~3,2%
set /a YYYY=AA +1
REM ************************************

set SIGUE=%N_DD%%ORI:~2,8%
set FOLDER=%N_DD%%MM%%AA%

echo %SIGUE%
echo %FOLDER%

pause

REM Hacemos el cambio de fecha
:validar

date %SIGUE%
set ACTUAL=%DATE%

REM si la fecha es valida entonces cambia
IF %ACTUAL% EQU %SIGUE% GOTO si

REM si la fecha no es valida hay que calcularla
IF %ACTUAL% NEQ %SIGUE% GOTO no

:si
echo Cambio la fecha > valida.txt
REM Se crea carpeta
mkdir %FOLDER%
goto salir

:no
echo No hay cambio > valida.txt
REM Se debe adecuar la fecha

IF %MM% EQU 12 goto mes

REM Intentamos modificando el día
REM Se cambia a día primero y mes mas uno
set DD_ORI=01
set dd=%DD_ORI%
set SIGUE=%DD_ORI%/%N_MM%/%AA%
set FOLDER=%DD_ORI%%N_MM%%AA%
echo %sigue%
goto validar
echo ==================
pause

:mes
REM Se cambia a dia primero y mes primero
set DD_ORI=01
set MM_ORI=01
REM Se aumenta el año mas uno
set SIGUE=%DD_ORI%/%MM_ORI%/%YYYY%
set FOLDER=%DD_ORI%%MM_ORI%%YYYY%
echo "CAMBIO AÑO"
echo %SIGUE%
pause
goto validar

goto salir

:salir
date %ORI%
pause
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

RE:crear carpeta con fecha posterior al actual_val

Publicado por PHILIPS (5 intervenciones) el 01/10/2008 02:28:38
MI ESTIMADOS

yA PROBE ESTE Y NO ME FUNCIONO.
eL ANTERIOR TIENE EL PROBLEMA CUANDOLLEGA AL FIN DE MES Y A QUE NO PASA AL Q DEBE SER EJEMPLO.
HOY ES 30 DE SEPTIEMBRE EN LUGAR DE PASAR AL DIA 01 DE OCTUBRE CREA CARPETAS DEL 31 DE SEPTIEMBRE

ACTUALMENTE LO TENGO DE ESTA MANERA

set suma=1
set dd=%date:~0,2%
set /a fecha=%dd%+%suma%

mkdir C:PRUEBA\%fecha%%date:~3,2%%date:~6,4%
mkdir C:PRUEBA\%fecha%%date:~3,2%%date:~6,4%ADELANTOS

PERO NO HE PODIDO VALIDAR LA FECHA PARA QUE AUTOMATICAMENTE SE REALIZE EL CAMBIO DE MES Y POR CONSIGUIENTE CAMBIO DE AÑO

OJALA ME PUDIERAN ORIENTAR PARA SOLUCIONARLO

GRACIAS
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

RE:crear carpeta con fecha posterior al actual_val

Publicado por Armando Nava  (194 intervenciones) el 04/10/2008 21:19:21
Saludos

Probe este codigo y me funcionó, si pudieras ser mas especifico con los mensajes de error. Todo lo que hay que hacer es dar enter cuando te pide la fecha:

Nuevamente haciendo pruebas, cuando le das
set DD=%DATE:~0,2%
echo %DD%
Desaparecen los errores de formato cuando te toma un espacio en la fecha.


set ORI=%DATE%

REM para efectuar operaciones matematicas
REM *************************************
set dd_c=%DATE:~0,1%
if %dd_c% NEQ 0 set dd=%DATE:~0,2%
if %dd_c% EQU 0 set dd=%DATE:~1,1%
set /a dd=dd + 1
set N_DD=%dd%

set mm_c=%DATE:~3,1%
if %mm_c% NEQ 0 set mm=%DATE:~3,2%
if %mm_c% EQU 0 set mm=%DATE:~4,1%
set /a mm=mm + 1
set N_MM=%mm%

set DD=%DATE:~0,2%
set AA=%DATE:~6,4%
set MM=%DATE:~3,2%
set /a YYYY=AA +1
REM ************************************

set SIGUE=%N_DD%%ORI:~2,8%
set FOLDER=%N_DD%%MM%%AA%

echo %SIGUE%
echo %FOLDER%

pause

REM Hacemos el cambio de fecha
:validar

date %SIGUE%
set ACTUAL=%DATE%

REM si la fecha es valida entonces cambia
IF %ACTUAL% EQU %SIGUE% GOTO si

REM si la fecha no es valida hay que calcularla
IF %ACTUAL% NEQ %SIGUE% GOTO no

:si
echo Cambio la fecha > valida.txt
REM Se crea carpeta
mkdir %FOLDER%
goto salir

:no
echo No hay cambio > valida.txt
REM Se debe adecuar la fecha

IF %MM% EQU 12 goto mes

REM Intentamos modificando el día
REM Se cambia a día primero y mes mas uno
set DD_ORI=01
set dd=%DD_ORI%
set SIGUE=%DD_ORI%/%N_MM%/%AA%
set FOLDER=%DD_ORI%%N_MM%%AA%
echo %sigue%
goto validar
echo ==================
pause

:mes
REM Se cambia a dia primero y mes primero
set DD_ORI=01
set MM_ORI=01
REM Se aumenta el año mas uno
set SIGUE=%DD_ORI%/%MM_ORI%/%YYYY%
set FOLDER=%DD_ORI%%MM_ORI%%YYYY%
echo "CAMBIO AÑO"
echo %SIGUE%
pause
goto validar

goto salir

:salir
date %ORI%
pause
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

RE:crear carpeta con fecha posterior al actual_val

Publicado por philips (5 intervenciones) el 04/10/2008 22:30:15
Asi como lo tienes crea 3 carpetas separadas, una con el dia, otra con el mes y otra con el año.
Si le coloco en el primer set FOLDER="%N_DD%%MM%%AA%" entre comillas se crea solamente una carpeta ejemplo 5 10 2008, lo que necesito es que quede 05102008 sin espacios entre los nombres y cuando sea solamente un digito se anteponga el 0 en el dia 05102008 y por otra parte al llegar al fin de mes algo le falta a la validacion ya que me crea siempre una fecha no existente, es decir que si le coloco al sistema dia 31 de octubre de 2008, se supone que deberia crearse una carpeta con nombre de fecha 01/11/2008, en lugar crea una carpeta con nombre 32 10 2008

Confio que me ayuden a resolver este detalle

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

RE:crear carpeta con fecha posterior al actual_val

Publicado por Armando Nava (1 intervención) el 05/10/2008 19:05:27
Si, todavia hay algunos casos que considerar en cuanto al formato de fecha, lo reviso. y luego lo subo.
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

RE:crear carpeta con fecha posterior al actual

Publicado por Armando Nava (194 intervenciones) el 10/10/2008 20:39:42
saludos

Pues al fin aqui lo tienes, uno de los problemas es que si el dia empieza con CERO, y al sumarle uno hace cosas raras, ejecutar set /? para detalles.

Ejecuta estas instrucciones primero para ver como te genera las variables
------------------------------------------------------------------------------------------------------
set DD=%DATE:~0,2%
set MM=%DATE:~3,2%
set AA=%DATE:~6,4%
echo %DD%
echo %MM%
echo %AA%
echo %DD%%MM%%AA%

REM Si te generan espacios usa

set DD=%date:~0,2%
set MM=%date:~3,2%
set AA=%date:~6,4%
echo %DD%
echo %MM%
echo %AA%
echo %DD%%MM%%AA%
-----------------------------------------------------------------------------------------------------

El bat intenta primero con día más uno para verificar el cambio de fecha, despues con un cambio de mes dia=01 mes+1, y finalmente esta el caso de fin de año, dia 01, mes 01, año+1

En los ultimos dos casos hay que dar un ENTER para que intente el cambio de fecha, lo he probado para los tres casos y me genera las carpetas correctamente, espero que no tengas problemas.

echo off
set ORI=%DATE%
set CERO=0
echo %ORI%
echo %CERO%

REM Identificamos si la fecha tiene un solo digito
REM **********************************************
set dd_c=%DATE:~0,1%
echo %dd_c%
REM **********************************************

REM Para un solo digito se setean las variales como
REM ***********************************************
if %dd_c% EQU 0 set dd=%DATE:~1,1%
if %dd_c% EQU 0 set /a dd=dd + 1
if %dd_c% EQU 0 set N_DD=%CERO%%dd%

REM Para dos digitos se setean las variales como
REM ***********************************************
if %dd_c% NEQ 0 set dd=%DATE:~0,2%
if %dd_c% NEQ 0 set /a dd=dd + 1
if %dd_c% NEQ 0 set N_DD=%dd%

echo *****************MIS VARIABLES****************
echo %N_DD%
echo %dd_c%
REM **********************************************

set mm_c=%DATE:~3,1%
if %mm_c% NEQ 0 set mm=%DATE:~3,2%
if %mm_c% EQU 0 set mm=%DATE:~4,1%
set /a mm=mm + 1
set N_MM=%mm%

set DD=%DATE:~0,2%
set AA=%DATE:~6,4%
set MM=%DATE:~3,2%
set /a YYYY=AA +1

REM ***Se crea la fecha y folder con día más uno***
REM ***********************************************
set SIGUE=%N_DD%%ORI:~2,8%
set FOLDER=%N_DD%%MM%%AA%

echo %SIGUE%
echo %FOLDER%

REM pause

REM *********Hacemos el cambio de fecha************
REM ******INTENTAMOS PRIMERO CON DIA MAS UN0*******
REM *******DESPUES CON DIA 01 Y MES MAS UNO********
REM ******Y FINALMENETE DIA 01 Y AÑO MAS UNO*******

:validar

date %SIGUE%
set ACTUAL=%DATE%

REM Si la variable SIGUE es valida, cambia la fecha
REM ***********************************************
IF %ACTUAL% EQU %SIGUE% GOTO si

REM Si la variable SIGUE no es valida hay que calcularla
REM ****************************************************
IF %ACTUAL% NEQ %SIGUE% GOTO no

:si
REM ********Cambio la fecha > valida.txt***********
REM *************Se crea carpeta*******************
mkdir %FOLDER%
goto salir

:no
echo No hay cambio > valida.txt
REM Se debe adecuar la fecha

IF %MM% EQU 12 goto mes

REM Se cambia a día primero y mes mas uno
REM ***********CAMBIO DE MES*************
set DD_ORI=01
set dd=%DD_ORI%
set SIGUE=%DD_ORI%/%N_MM%/%AA%
set FOLDER=%DD_ORI%%N_MM%%AA%
echo %sigue%
goto validar

:mes
REM Se cambia a dia primero y mes primero
REM ***********CAMBIO DE AÑO*************
set DD_ORI=01
set MM_ORI=01
REM Se aumenta el año mas uno
set SIGUE=%DD_ORI%/%MM_ORI%/%YYYY%
set FOLDER=%DD_ORI%%MM_ORI%%YYYY%
echo %SIGUE%
goto validar

goto salir

:salir
REM Le regresamos la fecha original al sistema
REM ***********************************************
date %ORI%

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

RE:crear carpeta con fecha posterior al actual

Publicado por philips (5 intervenciones) el 15/10/2008 04:27:06
excelente.

Hay manera de programarlo sin que te solite el enter, ya que la finalidad es que se realice de manera automatica.

Agradesco de antemano tu apoyo y ojala se pudiera

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

RE:crear carpeta con fecha posterior al actual

Publicado por Armando Nava  (194 intervenciones) el 17/10/2008 15:37:28
Saludos

La verdad es que no sabia que se podía hacer de la siguiente manera, pero lo pude descubrir y aqui lo tienes.

Despues de la etiqueta

:validar

Oroginalmente tenemos lo siguiente:
----------------------------------------
date %SIGUE%
set ACTUAL=%DATE%
----------------------------------------

Debemos mandar la variable a un archivo y despues pasarsela a date
-------------------------------------
echo %SiGUE% > fecha.txt
date < fecha.txt
set ACTUAL=%DATE%
-------------------------------------
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

RE:crear carpeta con fecha posterior al actual

Publicado por joel (1 intervención) el 14/02/2014 15:39:03
no se puede generar con dias que empieza con ceros ejemplo 05/02/2014 solo me trae 5/02/2014
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

RE:crear carpeta con fecha posterior al actual

Publicado por eury (2 intervenciones) el 08/03/2016 20:44:47
a mi me funciono lo de sumarle 1, la cuestion es que solo funciono los primeros dias, despues ya no me reconoce el valor de la variable.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
set uno=1
set fecha=%date:~6,4%-%date:~3,2%-%date:~0,2%
set dia=%date:~0,2%
echo dia=%dia%
set  /a dia=dia-uno
echo dia despues = %dia%
set diaj=%date:~0,2%
echo diaj=%diaj%
set /a diaj=(diaj+31+28)
echo diaj despues=%diaj%
set fechaj=%date:~8,4%0%diaj%
set fechaj=%fechaj: =%
set fecha2=%date:~3,2%%date:~6,4%
set fecha3=%date:~8,2%%date:~3,2%0%dia%


me arroja fecha3 = 201603-1 y de ahi no paso :(
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