Показать полную графическую версию : [решено] Создание папок на основе имен файлов и перемещение файлов в эти папки
Добрый день.
Есть папка в которую камера скидывает видео в таком формате
_2016Y11M07D18H_00M00S.mp4
_2016Y11M07D18H_01M00S.mp4
и так далее
Прошу помочь создать батник чтобы раскидывать эти файлы по структуре папок вида YYYY\MM\DD
Важное условие: для имен папок нужно использовать имена файлов, а не даты создания этих файлов.
megaloman
10-12-2016, 16:34
@Echo Off
Set "In=Z:\Box_In"
Set "Mask=_????Y??M??D*.mp4"
Set "Out=Z:\Box_Out"
FOR /F "usebackq tokens=1,2,3 delims=_YMD" %%i IN (`Dir "%In%\%Mask%" /B /A:-D 2^>nul`) DO (
If Exist "%In%\_%%iY%%jM%%k*.mp4" (
If Not Exist "%Out%\%%i\%%j\%%k" Md "%Out%\%%i\%%j\%%k"
Move /Y "%In%\_%%iY%%jM%%k*.mp4" "%Out%\%%i\%%j\%%k\" >nul
)
)
А можно использовать этот скрип на несколько папок?
Для решения задачи принимаем что Out всегда совпадает с In а Mask всегда одинаковы.
megaloman
10-12-2016, 21:11
@Echo Off
Set "In="Z:\Box_In" "Z:\Box_Arc" "Z:\dddddddd" "Z:\Tra La La""
Set "Mask=_????Y??M??D*.mp4"
FOR %%d IN (%In%) DO (
FOR /F "usebackq tokens=1,2,3 delims=_YMD" %%i IN (`Dir "%%~d\%Mask%" /B /A:-D 2^>nul`) DO (
If Exist "%%~d\_%%iY%%jM%%k*.mp4" (
If Not Exist "%%~d\%%i\%%j\%%k" Md "%%~d\%%i\%%j\%%k"
Move /Y "%%~d\_%%iY%%jM%%k*.mp4" "%%~d\%%i\%%j\%%k\" >nul
)
)
)
или, ИМХО, нагляднее @Echo Off
Set "Mask=_????Y??M??D*.mp4"
Call :Trans "Z:\Box_In"
Call :Trans "Z:\Box_Arc"
Call :Trans "Z:\dddddddd"
Call :Trans "Z:\Tra La La"
GoTo :Eof
:Trans
FOR /F "usebackq tokens=1,2,3 delims=_YMD" %%i IN (`Dir "%~1\%Mask%" /B /A:-D 2^>nul`) DO (
If Exist "%~1\_%%iY%%jM%%k*.mp4" (
If Not Exist "%~1\%%i\%%j\%%k" Md "%~1\%%i\%%j\%%k"
Move /Y "%~1\_%%iY%%jM%%k*.mp4" "%~1\%%i\%%j\%%k\" >nul
)
)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.