Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Создание папок на основе имен файлов и перемещение файлов в эти папки (http://forum.oszone.net/showthread.php?t=321604)

mezzin 10-12-2016 16:07 2694576

Создание папок на основе имен файлов и перемещение файлов в эти папки
 
Добрый день.
Есть папка в которую камера скидывает видео в таком формате
_2016Y11M07D18H_00M00S.mp4
_2016Y11M07D18H_01M00S.mp4
и так далее

Прошу помочь создать батник чтобы раскидывать эти файлы по структуре папок вида YYYY\MM\DD
Важное условие: для имен папок нужно использовать имена файлов, а не даты создания этих файлов.

megaloman 10-12-2016 16:34 2694582

Код:

@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
        )
)


mezzin 10-12-2016 18:00 2694604

спасибо, то что надо!

mezzin 10-12-2016 20:18 2694619

А можно использовать этот скрип на несколько папок?
Для решения задачи принимаем что Out всегда совпадает с In а Mask всегда одинаковы.

megaloman 10-12-2016 21:11 2694629

Код:

@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
        )
)



Время: 19:07.

Время: 19:07.
© OSzone.net 2001-