Sort folders by date, in .bat
Resuelto
Silk7499
Mensajes publicados
5
Estado
Miembro
-
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!
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
Bonjour,
Dis-moi si ça te convient :
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.”
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.”
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 !!