Войти

Показать полную графическую версию : [решено] Скрипт для сортировки файлов по папкам


eeeeg@vk
21-07-2021, 12:11
Добрый день, помогите пожалуйста, нужен скрипт сортирующие файлы по папкам, есть куча видео, все они имеют название состоящее из частей:
ch01 - 01 это номер камеры с которой снято видео (камер всего 8), дальше идет дата и время (и дата и время могут меняться, но неизменно то, что видео с однинаковой датой и временем ровно 8:

ch01_20210712211220_WMV V9.wmv
ch01_20210712212213_WMV V9.wmv
ch01_20210712212126_WMV V9.wmv
.....................................................
ch02_20210712212420_WMV V9.wmv


Нужно чтобы скрипт брал видео с одинаковым временем и сортировал в папки (должно получиться 8 видео), то есть в папке должно быть так как в примере ниже
ch01_20210712212420_WMV V9.wmv
ch02_20210712212420_WMV V9.wmv
ch03_20210712212420_WMV V9.wmv
.....................................................
ch08_20210712212420_WMV V9.wmv

Для понимания приложил архив с тестовыми файлами. Заранее спасибо

YuS_2
21-07-2021, 13:18
чтобы скрипт брал видео с одинаковым временем и сортировал в папки (должно получиться 8 видео) »
powershell
$in = '.\тест'
$out = '.\out\'
$filter = '*.wmv'
dir $in -filter $filter -file|%{
$tmp = $out + ($_.basename -split '_')[1]
if (!(test-path $tmp)){md $tmp|out-null}
mi $_.fullname $tmp
}

megaloman
21-07-2021, 13:44
Нужно чтобы скрипт брал видео с одинаковым временем и сортировал в папки »Если под "сортировал" подразумеваем "скопировал", то возможно так:@Echo Off
cls
Set "BoxIn=Z:\Box_In\ТЕСТ"
Set "Mask=ch??_20????????????_WMV V9.wmv"

Set "BoxOut=Z:\Box_Out"

FOR /F "usebackq tokens=1,2* delims=_" %%i IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO (
If Not Exist "%BoxOut%\%%j\%%i_%%j_%%k" >nul Xcopy /D "%BoxIn%\????_%%j_%%k" "%BoxOut%\%%j\"
)
Pause
Exit /BЕсли под "сортировал" подразумеваем "переместил", то возможно так:@Echo Off
cls
Set "BoxIn=Z:\Box_In\ТЕСТ"
Set "Mask=ch??_20????????????_WMV V9.wmv"

Set "BoxOut=Z:\Box_Out"

FOR /F "usebackq tokens=1,2* delims=_" %%i IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO (
If Exist "%BoxIn%\%%i_%%j_%%k" (
2>nul Md "%BoxOut%\%%j"
>nul Move "%BoxIn%\????_%%j_%%k" "%BoxOut%\%%j\"
)
)
Pause
Exit /B
Если в путях есть кириллица, то сохранить в 866 кодировке.




© OSzone.net 2001-2012