Sort folders by date, in .bat

Resuelto
Silk7499 Mensajes publicados 5 Estado Miembro -  
Silk7499 Mensajes publicados 5 Estado Miembro -
Hola,

Tengo un proyecto que se crea cada día automáticamente (que lleva por nombre la fecha del día en que se creó, en este formato, por ejemplo para el 14 de junio de 2018: 14.06.2018) y que contiene carpetas y copias de seguridad.
Hasta ahora todo va bien, y me encuentro, por tanto, con 365 carpetas al final del año en mi directorio principal C:\FTP (como hay 365 días).

Me gustaría crear un script en .Bat, para que, cada mes, tras los 30 o 31 carpetas del mes anterior (por ejemplo, cuando pasemos a julio, mes número 7, y solo en ese momento), todas las carpetas que lleven la fecha del mes de junio (mes número 6) sean redirigidas a una carpeta que se llame 06-2018.

Y realmente no lo consigo; he probado con tokens o delimitadores, pero cada vez hay un problema..
Si pudieras ayudarme, sería realmente fantástico..

¡Gracias de antemano!

1 respuesta

barnabe0057 Mensajes publicados 14329 Fecha de registro   Estado Colaborador Última intervención   4 930
 
Bonjour,

Dis-moi si ça te convient :

@echo off
setlocal enableextensions enabledelayedexpansion
chcp 1252 >nul

set Dossier=C:\FTP

cd /d %Dossier% || exit /b 1

set today=%date:~0,2%
set mois=%date:~3,2%

set /a precedent=!mois!-1
set precedent=0!precedent!
set precedent=!precedent:~-2!

if !today! EQU 01 (call :deplacement)

echo. & pause
exit /b 0

:deplacement
for /f "tokens=1-3 delims=." %%A in ('dir /b /ad') do (
set destination=!precedent!-%%C\%%A.%%B.%%C
if "%%B"=="!precedent!" (
echo. & echo ### %%A.%%B.%%C ==^>^> !precedent!-%%C
if not exist "!destination!" (mkdir "!destination!")
>nul robocopy "%%A.%%B.%%C" "!destination!" /E /DCOPY:T /SEC /MOVE)
)
goto :eof

rem

Si tu as des questions n'hésite pas.

ps : la semaine je ne suis disponible qu'en soirée.

“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
0
Silk7499 Mensajes publicados 5 Estado Miembro
 
Hola,

En primer lugar, muchas gracias, tu script hace exactamente lo que quería y es genial!

Pero he constatado que no sobrescribe los archivos cuando los mueve; por ejemplo, si ejecuto el script el 30/06/2018 a las 8, crea la carpeta y todo dentro de la carpeta creada, y si lo vuelvo a ejecutar el mismo día a las 14, los va añadiendo, lo cual está bien, porque cuando intenté crear algo yo, los sobrescribía sistemáticamente, por eso elegí un razonamiento bastante complejo...

Entonces, para mí la complejidad de tu programa es bastante alta :/ Pero ¿podrías modificarlo para que pueda ejecutarlo en cualquier momento y no solo el 30/31? Al final funciona igual de bien cada día de la semana, ¿no?

Te agradezco de antemano tu respuesta, y gracias otra vez por el programa ya proporcionado !!
0
Silk7499 Mensajes publicados 5 Estado Miembro
 
Finalmente encontré la respuesta a mi problema por mi cuenta después de sumergirme en el programa y aclarar las ideas clave. No era tan complicado lo que te había pedido en la segunda instancia ;) ¡Todo bien para mí, muchas gracias! :)
0