@echo off & SetLocal EnableDelayedExpansion
REM variables
:: Directorios origen
SET origen=%~p0
:: Directorios destino
SET destino=%~p0%backup\
SET rutaAudio=%destino%01_audio\
SET rutaDoc=%destino%02_doc\
SET rutaImagen=%destino%03_imagen\
SET rutaVideo=%destino%04_video\
SET rutaOtro=%destino%05_otros\
:: Formatos a recuperar
SET audios=.aac .mp3 .ogg .wma
SET documentos=.acces .doc .docx .dot .ott .pdf .rtf .txt .tex .xls .xlsx .xml
SET imagenes=.bmp .gif .jpeg .jpg .png .svg
SET videos=.avi .divx .mp4 .mpeg .mpg .wmv
REM inicio del proceso
:: Recuperamos fecha y hora de inicio y se guarda en el fichero de salida
set inicio=%date% %time%
:: Si no existe directorio destino, se crea
if not exist "%destino%" md "%destino%"
:: Comienza en directorio origen y recorre todos los subdirectorios
for /r %%r in (.) do (
:: Almacena las rutas de directorios y subdirectorios a tratar
pushd %%r
:: Llamada a funcion para organizar por tipo de archivo
for %%f in ("*.*") do (
call :tratar %%f
)
:: Descarta las rutas almacenadas
popd
)
REM Fin del proceso
:: Recuperamos fecha y hora de inicio y se guarda en el fichero de salida
echo INICIO !inicio!
echo FIN %date% %time%
:: Finaliza el proceso
goto:EOF
REM Funciones
:tratar
:: parametro pasado al llamar a la funcion
set archivo=%1
:: tipo de archivo
set tipo=%~x1
:: Fecha del archivo. Para fecha de creacion SET varFecha=%~tc1
SET varFecha=%~t1
:: Recupera mes y año
SET varMes=!varFecha:~3,2!
SET varAny=!varFecha:~6,4!
SET varAAMM=!varAny!!varMes!
SET /a tratado=0
:: Comprueba si archivo es de Audio
for %%a in (!audios!) do (
if !tratado!==0 (
if /i !tipo!==%%a (
if not exist "!rutaAudio!" md "!rutaAudio!"
set ruta=!rutaAudio!!varAAMM!\
if not exist "!ruta!" md "!ruta!"
copy !archivo! !ruta!
set /a tratado=1
)
)
)
:: Comprueba si archivo es Documento
if !tratado!==0 (
for %%d in (!documentos!) do (
if !tratado!==0 (
if /i !tipo!==%%d (
if not exist "!rutaDoc!" md "!rutaDoc!"
set ruta=!rutaDoc!!varAAMM!\
if not exist "!ruta!" md "!ruta!"
copy !archivo! !ruta!
set /a tratado=1
)
)
)
)
:: Comprueba si archivo es Imagen
if !tratado!==0 (
for %%i in (!imagenes!) do (
if !tratado!==0 (
if /i !tipo!==%%i (
if not exist "!rutaImagen!" md "!rutaImagen!"
set ruta=!rutaImagen!!varAAMM!\
if not exist "!ruta!" md "!ruta!"
copy !archivo! !ruta!
set /a tratado=1
)
)
)
)
:: Comprueba si archivo es Video
if !tratado!==0 (
for %%v in (!videos!) do (
if !tratado!==0 (
if /i !tipo!==%%v (
if not exist "!rutaVideo!" md "!rutaVideo!"
set ruta=!rutaVideo!!varAAMM!\
if not exist "!ruta!" md "!ruta!"
copy !archivo! !ruta!
set /a tratado=1
)
)
)
)
:: Si no es ninguno de los anteriores
if !tratado!==0 (
if not exist "!rutaOtro!" md "!rutaOtro!"
copy !archivo! !rutaOtro!
)
Comentarios sobre la versión: 1.0 (0)
No hay comentarios