Ms-Dos - Copiar archivos del dia anterior

 
Vista:

Copiar archivos del dia anterior

Publicado por Bryan (1 intervención) el 22/08/2018 16:34:26
Hola gente, quisiera pedir su ayuda con lo siguiente:

Necesito copiar todos los archivos con fecha del día anterior de un directorio a otro por linea de comandos cmd, solo eso alguien sabe como debo poner la fecha?
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 Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Copiar archivos del dia anterior

Publicado por Antoni Masana (811 intervenciones) el 23/08/2018 07:24:08
Primero tienes que guardar la fecha del día anterior y después usar el comando XCOPY con el parámetro /D . El formato de la fecha en este parámetro es m-d-a.

Este pequeño BAT te hace la copia y guarda la fecha para la ejecución de mañana. En la primera ejecución no realizara la copia porque no tiene la fecha de referencia.

El bat esta realizado para que funcione si el formato de fecha es Día-Mes-Año.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
 
set Archivo=C:\Work\Mi-Fecha.bat
 
Set Orig= C:\Documentos
Set Dest= D:\Documentos-Backup\.
 
if not exist %Archivo% goto Salto
   call %Archivo%
   XCOPY %Orig%/*.* %Dest% /D:%Fecha%

:Salto
   set dd=%Date:~0,2%
   set mm=%Date:~3,2%
   set aa=%Date:~6,4%

   echo set Fecha=%mm%-%dd%-%aa%>%Archivo%


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
Imágen de perfil de Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 12/10/2021 21:31:30
Hola Antoni, un gusto. me ha servido tu script, como para entender medianamente como se procesa. Tengo que adaptarlo a una variación pero no doy como resolver. Necesito que copie todos los archivos .txt de una carpeta desde el dia anterior para atras , o sea, omitiendo el día actual. En este momento me funciona pero me trae ayer y hoy. Puedes darme una idea por donde modificar ? 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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Copiar archivos del dia anterior

Publicado por Antoni Masana (811 intervenciones) el 13/10/2021 15:36:32
Dale un vistazo al comando forfiles

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
78
79
80
81
C:\>forfiles /?
 
FORFILES [/P nombre de ruta] [/M máscara de búsqueda] [/S]
         [/C comando] [/D [+ | -] {dd/MM/yyyy | dd}]
 
Descripción:
    Selecciona un archivo (o conjunto de archivos) y ejecuta un
    comando en ese archivo. Esto es útil para trabajos por lotes.
 
Lista de parámetros:
    /P    nombre de ruta       Indica la ruta de acceso para iniciar la
                        búsqueda. La carpeta predeterminada es el
                        directorio de trabajo actual (.).
 
    /M    máscara de búsqueda  Busca archivos de acuerdo con una máscara de
                        búsqueda. La máscara de búsqueda predeterminada es '*' .
 
    /S                         Indica a forfiles que realice recursividad en
                        subdirectorios. Como "DIR /S".
 
    /C    comando              Indica el comando que se va a ejecutar para
                        cada archivo. Las cadenas de comandos deben
                        estar entre comillas dobles.
 
                        El comando predeterminado es "cmd /c eco
                        @file". Se pueden usar las siguientes
                        variables en la cadena de comandos:
                        @file    - devuelve el nombre del archivo.
                        @fname   - devuelve el nombre de archivo sin
                                   extensión.
                        @ext     - devuelve solo la extensión del
                                   archivo.
                        @path    - devuelve la ruta de acceso completa
                                   del archivo.
                        @relpath - devuelve la ruta de acceso relativa
                                   del archivo.
                        @isdir   - devuelve "TRUE" si un tipo de
                                   archivo es un directorio y "FALSE"
                                   para archivos.
                        @fsize   - devuelve el tamaño del archivo en
                                   bytes.
                        @fdate   - devuelve la última fecha de
                                   modificación del archivo.
                        @ftime   - devuelve la última hora de
                                   modificación del archivo.
 
                        Para incluir caracteres especiales en la línea
                        de comandos, use el código hexadecimal del
                        carácter en formato 0xHH (ejemplo, 0x09 para
                        tabulador). Interno comandos CMD.exe deben
                        estar precedidos por "cmd /c".
 
    /D    fecha          Selecciona archivos con última fecha de
                        modificación posterior o igual a (+), o
                        anterior o igual a (-), la fecha especificada
                        usando el formato "dd/MM/yyyy"; o selecciona
                        archivos con última fecha de modificación
                        posterior o igual a (+) la fecha actual más
                        "dd" días, o anterior o igual a (-) la fecha
                        actual menos "dd" días. Un número de días "dd"
                        puede ser cualquier número del intervalo
                        0-32768. "+" se toma como signo predeterminado
                        si no se especifica.
 
    /?                  Muestra este mensaje de ayuda.
 
Ejemplos:
    FORFILES /?
    FORFILES
    FORFILES /P C:\WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe
             /C "cmd /c echo @path 0x09 se cambió hace 30 días"
    FORFILES /D 01/01/2001
             /C "cmd /c echo @fname es nuevo desde el 1 de enero de 2001"
    FORFILES /D +13/10/2021 /C "cmd /c echo @fname es nuevo hoy"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

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
Imágen de perfil de Luis

Copiar archivos del dia anterior

Publicado por Luis (17 intervenciones) el 13/10/2021 15:46:47
Gracias Antoni, muy claro. Ayer estuve intentando bajarme forfiles pero no tuve suerte. Aparentemente la version mas compatible con XP es la que se extrae de Windows 2003 server ... pero no la consigo ... que desgracia
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 Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Copiar archivos del dia anterior

Publicado por Antoni Masana (811 intervenciones) el 13/10/2021 23:36:40
El Forfiles es de la versión 7 y/o 10 de Windows.

Se me ocurre una solución

1
2
3
4
5
6
7
8
@echo offX
for %%a in (*.bat) do Call :Copia %%a %%~ta
goto:eof
 
:Copia
   Set Orig=%1
   Set Fech=%2
   IF Not %Fech% == %Date% Copy %Orig% C:\Destino\.

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
Imágen de perfil de Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 14/10/2021 01:46:46
Gracias nuevamente Antony , me cuesta bastante , pero viendo tu codigo y alguna data que voy bajando por ahi, voy entendiendo cada vez un poco más. Hoy temprano encontré un código con algunas que me pareció interesante para fusionarlo con algo de lo que me pasaste,que está genial .
Si puedes me gustaría lo vieras , con esto logré que me reste 2 días o los que quiera a la fecha , y entiendo todo menos la linea ultima del loop que no entiendo las variables f0 :

: xcopy /d:%m%-%d%-%y% /h /l "%~f0" "%~f0\" >nul 2>&1 || goto loop

no se si en la line del MOVE se puede hacer algo para que mueva todos los .reg , menos el que corresponde al dia actual ...

**************************************************************************************************************
CODIGO
**************************************************************************************************************
@echo off

set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%

:loop
set /a d-=2
if %d% LEQ 1 (
set d=28
set /a m-=1

if %m% == 1 (
set m=12
set /a y-=1
)
)

: xcopy /d:%m%-%d%-%y% /h /l "%~f0" "%~f0\" >nul 2>&1 || goto loop

Set Orig= "E:\Desarrollo\Pooleo_Upload\Registros\*.reg"
Set Dest= "C:\DESARROLLO\Back\."

XCOPY %Orig% %Dest% /Y /D:%m%-%d%-%y%
move /Y "E:\Desarrollo\Pooleo_Upload\Registros\*.reg" "E:\Desarrollo\Pooleo_Upload\Back\"

@ECHO.Proceso finalizado - Fecha : %date% - Hora : %time:~0,8% >> procesos.log

PAUSE
EXIT
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 Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Copiar archivos del dia anterior

Publicado por Antoni Masana (811 intervenciones) el 14/10/2021 14:35:50
Analizemos esta línea:

1
: xcopy /d:%m%-%d%-%y% /h /l "%~f0" "xx\" >nul 2>&1 || goto loop

En primer lugar con los dos puntos del inicio no se ejecuta. Cuando una línea de comandos empieza por dos puntos ":" es una etiqueta.

Los parámetros del XCOPY

1
2
3
/D:m-d-y     Copia los archivos cambiados en la fecha especificada o después de la misma.
/H           Copia también los archivos de sistema y los ocultos.
/I           Si el destino no existe y se copia más de un archivo, supone que el destino debe ser un directorio.

En un BAT el %1 es el primer parámetro, %2 es el segundo parámetro y así hasta el %9. %* devuelve todos los parámetros.
El %0 es el proceso llamada en este caso el nombre del BAT y la ruta del mismo.

El %~# donde # es una letra que tiene las siguientes opciones:

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
Además, la sustitución de las referencias de variables FOR ha sido mejorada.
Ahora puede usar la siguiente sintaxis opcional:
 
    %~I         - expande %I quitando las comillas (") que pudiera haber
    %~fI        - expande %I a un nombre de ruta calificado
    %~dI        - expande %I solo a una letra de unidad
    %~pI        - expande %I solo a una ruta
    %~nI        - expande %I solo a un nombre de archivo
    %~xI        - expande %I solo a una extensión de archivo
    %~sI        - ruta expandida contiene solo nombres cortos
    %~aI        - expande %I a atributos de archivos
    %~tI        - expande %I a fecha/hora del archivo
    %~zI        - expande %I a tamaño del archivo
    %~$PATH:I   - busca los directorios de la lista de la variable
                   de entorno de PATH y expande %I al nombre totalmente
                   calificado del primero que se encuentre. Si el nombre
                   de la variable de entorno no es definido o no se
                   encuentra el archivo en la búsqueda, el modificador
                   se expande a la cadena vacía.
Los modificadores se pueden combinar para conseguir resultados compuestos:
    %~dpI       - expande %I solo a una letra de unidad y ruta
    %~nxI       - expande %I solo a un nombre de archivo y extensión
    %~fsI       - expande %I solo a un nombre de ruta con nombres cortos
    %~dp$PATH:i - busca los directorios de la lista de la variable de
                   entorno de PATH para %I y se expande a la letra de
                   unidad y ruta del primero que encuentre.
    %~ftzaI     - expande %I a DIR como línea de salida.

Y ahora entendiendo todo este pastizal esa línea se convierte en esto:

1
xcopy /d:10-12-2021 /h /l "C:\Tmp\xx.bat" "C:\Tmp\xx.bat\"   1>nul 2>&1  || goto loop

He ejecutado esta línea desde un BAT que se llama XX y esta en C:\tmp

Y ahora la segunda parte. ¿Que significa esto?

1
1>nul 2>&1  || goto loop

1
2
3
4
1>nul      Hace que no muestre los mensajes standard los envíe a un dispositivo NULO.
2>&1       Hace que los mensajes de error los envíe al mismo dispositivo que los standard.
 ||        Si la ejecución del primer comando dio error ejecuta lo que hay a continuación
goto loop  Salta a la etiqueta Loop

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
Imágen de perfil de Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 14/10/2021 15:15:25
uhhh ... gracias Antony . Estaba confundido .. imaginando que para que no se ejecute se usaban :: dobles ... pero claro, al convertirse en etiqueta queda como eso ...
El código realmente funcional quedaría asi entonces :

@echo off
set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%
set /a d-=2

if %d% LEQ 1 (
set d=28
set /a m-=1

if %m% == 1 (
set m=12
set /a y-=1
)
)

Set Orig= "E:\Desarrollo\Pooleo_Upload\Registros\*.reg"
Set Dest= "C:\DESARROLLO\Back\."

XCOPY %Orig% %Dest% /Y /D:%m%-%d%-%y%
move /Y "E:\Desarrollo\Pooleo_Upload\Registros\*.reg" "E:\Desarrollo\Pooleo_Upload\Back\"

@ECHO.Proceso finalizado - Fecha : %date% - Hora : %time:~0,8% >> procesos.log

PAUSE
EXIT

Tengo una duda más , como para completar si fuera posible.
Con este bat logro ir 2 dias para atras y capturar esa fecha en las variables %m%-%d%-%y% , para pasarlas como fecha inicio al /D: del XCOPY . De esta manera , siempre voy copiando los últimos 3 días .

El problema sería que dentro de E:\Desarrollo\Pooleo_Upload\Registros\*.reg , otro programa crea diariamente un registro con el nombre de la fecha del tipo : 20211014.reg Durante toda la jornada , 00:00 a 23:59 se va agregando lineas a ese mismo archivo que es 1 línea x cada acceso a un sector. Si de acuerdo a este código , en concepto de backup, muevo ese archivo a "E:\Desarrollo\Pooleo_Upload\Back\" , en E:\Desarrollo\Pooleo_Upload\Registros\ se vuelve a crear otro archivo vacio con el mismo nombre y se le agregan las nuevas líneas mientras no finalice el día.
Si vuelvo a procesar , vuelvo a mover 20211014.reg con /Y a "E:\Desarrollo\Pooleo_Upload\Back\" y el nuevo me pisa el anterior, pierdo las lineas anteriores . Lo único que molesta en esta operativa, es que si x alguna necesidad necesito analizar los accesos de por ejemplo ese dia 20211014.reg .. solo voy a encontrar los accesos de la última version de este archivo.
Necesitaría que al mover no pise el archivo anterior , que si al mover si ya hay un archivo del mismo nombre, le agregue algo al nombre del tipo : 20211014a.reg - 20211014b.reg ( imagino que es la manera complicada)
Otra opción, teniendo en cuenta que el único archivo que permanece abierto a nuevos contenidos es el del mismo día , podría ser que al mover mueva todo menos el de ese mismo día. Esto es porque el archivo del día anterior , despues de las 23:59 ya no se actualiza.

Se te ocurre alguna manera sencilla de incorporar esta operativa a este bat ?
Gracias mil veces !
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 Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 14/10/2021 15:40:28
Perdón Antony por lo anterior, despues de darle vueltas me doy cuenta que no tiene mucho sentido.
Básicamente , necesito controlar que este bat traiga a "C:\DESARROLLO\Back\." solo el registro del dia anterior , y que el MOVE mueva a "E:\Desarrollo\Pooleo_Upload\Back\" solo ese registro . Con eso no necesitaría otros controles ya que siempre pasaría el archivo de ayer.
Se te ocurre como se podría modificar este bat ?

**********************************************************************************
CODIGO YA LIMPIO - Trae los 2 últimos días modificando set /a d-=1
**********************************************************************************

@echo off
set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%
set /a d-=1

if %d% LEQ 1 (
set d=28
set /a m-=1

if %m% == 1 (
set m=12
set /a y-=1
)
)

Set Orig= "E:\Desarrollo\Pooleo_Upload\Registros\*.reg"
Set Dest= "C:\DESARROLLO\Back\."

XCOPY %Orig% %Dest% /Y /D:%m%-%d%-%y%
move /Y "E:\Desarrollo\Pooleo_Upload\Registros\*.reg" "E:\Desarrollo\Pooleo_Upload\Back\"

@ECHO.Proceso finalizado - Fecha : %date% - Hora : %time:~0,8% >> procesos.log

PAUSE
EXIT
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 Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 14/10/2021 16:20:12
Antony, antes que nada , ya no leas lo anterior .... gracias infinitas . Creo que casi lo tengo , pero necesito de tu ayuda.
He simplificado el código.
Despues de darle vueltas ... y más vueltas ... solo necesito copiar siempre el dia anterior que es un archivo que ya no se actualiza, por lo cual si corro el bat a las 7 am de cada día , ya estaría muy bien.

Hay 2 detalles que me faltan, los describo al final

**********************************************
*** VERSION FINAL **********************
**********************************************
@echo off

set /a d=%date:~0,2%
set /a m=%date:~3,2%
set /a y=%date:~6,4%
set /a d-=1

if %d% LEQ 1 (
set d=28
set /a m-=1

if %m% == 1 (
set m=12
set /a y-=1
)
)
set archivo=%y%%m%%d%
echo %archivo%

Set Orig= "E:\Desarrollo\Registros\%archivo%.reg"
Set Dest= "C:\DESARROLLO\Back\."

XCOPY %Orig% %Dest% /Y
move /Y %Orig% %Dest%
@ECHO.Proceso finalizado - Fecha : %date% - Hora : %time:~0,8% File : %archivo% >> procesos.log
exit


*************************************************************************************
Problema 1 : Ahora tenemos el dia y mes de 2 dígitos , no se como poder validar que en el caso sea 1 digito , se le concatene un 0 por delante

Problema 2 : En el caso que sea 1º de mes estaba colocando el if set d=28 porque de la forma anterior alcanzaba que traiga 2 dias atras y con 28 me aseguraba que traiga algo en el caso sea el mes de marzo y traiga febrero. Con esto nuevo ya simplificado no se me ocurre como lograr validar que cuando reste 1 me devuelva 28 29 30 31 según el mes anterior . Piensas que es posible ?
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
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Copiar archivos del dia anterior

Publicado por Antoni Masana (811 intervenciones) el 14/10/2021 17:23:24
Solución para el fichero .REG

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cd /D E:\Desarrollo\Pooleo_Upload\Registros
FOR %%a in (*.reg) do call :REG %%a
 
@ECHO.Proceso finalizado - Fecha : %date% - Hora : %time:~0,8% >> procesos.log
PAUSE
EXIT
 
:REG
    if exist C:\DESARROLLO\Back\%1 (
       type %1 >>C:\DESARROLLO\Back\%1
       del  %1
    ) else (
       move %1 C:\DESARROLLO\Back\.
    )

¿Que hace?
El FOR te devuelve el fichero REG que tengas.
Mira si el fichero existe en el destino, la primera vez no existe y lo mueve dejando el origen sin fichero, al repetir la operación con el nuevo fichero que ya existe en el destino añade lo que tiene el origen al final del destino y borra el fichero origen.

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
Imágen de perfil de Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 14/10/2021 17:44:58
Excelente !!! .REG resuelto !!

Estoy indagando en lo que me falta , quizas pueda resolver con IF capturando el mes ... pero no se como lograr validar si es 1 o 2 digitos y concatenarle el 0 en caso sea 1.

Problema 1 : Ahora tenemos el dia y mes de 2 dígitos , no se como poder validar que en el caso sea 1 digito , se le concatene un 0 por delante

Problema 2 : En el caso que sea 1º de mes estaba colocando el if set d=28 porque de la forma anterior alcanzaba que traiga 2 dias atras y con 28 me aseguraba que traiga algo en el caso sea el mes de marzo y traiga febrero. Con esto nuevo ya simplificado no se me ocurre como lograr validar que cuando reste 1 me devuelva 28 29 30 31 según el mes anterior . Piensas que es posible ?
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 Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 14/10/2021 19:00:10
Antony, como puedo hacer para pasarle un retorno de carro inicial a lo que agrego al archivo que ya existe ? me agrega la data pegada a la que ya habia y me complica xq cada linea debería tener un enter final

type %1 >>C:\DESARROLLO\Back\%1
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 Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Copiar archivos del dia anterior

Publicado por Antoni Masana (811 intervenciones) el 14/10/2021 20:02:54
Para añadir el retorno de carro

1
2
echo.>>C:\DESARROLLO\Back\%1
type %1 >>C:\DESARROLLO\Back\%1


Sobre la fecha mirate este bat que hice hace tiempo a ver si te ayuda:

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
@echo off
set Fecha=%Date%
 
set DD=1%Fecha:~0,2%
set MM=1%Fecha:~3,2%
set AA=%Fecha:~6,4%
 
set    Resta=5
set /A MesAnt=101+%Resta%
 
IF %DD% GEQ %MesAnt% goto Mismo_Mes
 
   set /A MM=%MM%-1
   if %MM% == 100 set /A AA=%AA%-1
   if %MM% == 100 set    MM=112
 
   if %MM% == 101 set FinMes=31
   if %MM% == 102 set FinMes=28
   if %MM% == 103 set FinMes=31
   if %MM% == 104 set FinMes=30
   if %MM% == 105 set FinMes=31
   if %MM% == 106 set FinMes=30
   if %MM% == 107 set FinMes=31
   if %MM% == 108 set FinMes=31
   if %MM% == 109 set FinMes=30
   if %MM% == 110 set FinMes=31
   if %MM% == 111 set FinMes=30
   if %MM% == 112 set FinMes=31
 
   if not %MM% == 102 Goto Sigue
      set /A Bis=%AA%/4
      set /A Bis=%Bis%*4
      if %AA% == %Bis%  set FinMes=29
 
:Sigue
   set /A DD=%DD% + %FinMes%
 
:Mismo_Mes
   set /A DD=%DD%-%Resta%
 
:: @echo Hoy es... %Fecha% Hace 5 dias... %DD:~-2%/%MM:~-2%/%AA% - %Time:~0,8%>>Day-5.txt
   @echo Hoy es... %Fecha% Hace 5 dias... %DD:~-2%/%MM:~-2%/%AA% - %Time%>>Day-5.txt


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
Imágen de perfil de Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 14/10/2021 20:30:16
Muchas gracias Antony ! Probando y releyendo, hace 5 habia encontrado esa misma solución del echo.>>.. genial .. porque confirmo que es la correcta.
Seguro me va a servir esto de la fecha, creo va por ahi lo que necesito.

Me quedó solo la duda que copio, imagino debe ser algo sencillo de conocer este lenguaje ... no creo que funcione len o esas cosas
Ahora, gracias a tu ayuda y a lo poco que voy a aprendiendo , estoy capturando solo el archivo que se llama como la fecha del dia anterior , es la funcionalidad q necesitaba.
Me gustaría saber si puedes darme una idea de como tomar la variable %d% y %m% , verificar si tiene 1 caracter o 2 , y en caso que tenga 1 concatenarle el 0 al principio.

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
Imágen de perfil de Lucho

Copiar archivos del dia anterior

Publicado por Lucho (17 intervenciones) el 14/10/2021 23:28:51
Podrias explicarme algo ..? Porque cuando ingreso una fecha manualmente y le pongo x ej 01022021 u otra fecha :

@echo off

SET /P fecha = Escriba la fecha :
set /a d=%fecha:~0,2%
set /a m=%fecha:~3,2%
set /a y=%fecha:~6,4%


echo %d% %m% %y%


Me retorna como resultado -2 -4 -7

?? Algo no estoy entendiendo , esta claro, pense que %fecha:~0,2% era una forma de parsear desde posicion 0 hasta la 2
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