PDA

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


bidjo
06-08-2018, 22:07
всем привет.
есть много папок.
в папках гигантское количество фоток.
хочу конвертировать в видео все ffmpeg-ом, но для начала надо хотя бы, что бы видео файл каждый был весом не более 8 часов. для этого надо не более 960 файлов.

скрипт

@echo off
setlocal
1>nul chcp 1251
cd c:\1
(for %%i in (*.jpg) do @echo file '%%i') > mylist.txt
создает просто файл со всем добром внутри.
мне же нужно что бы создавался файл, с обьемом, например 960 файлов. ну а так как в папке десяток тысяч файлов, то нужно что бы скрипт создал несколько mylist.txt с перечнем всего этого добра, и что бы оно не повторялось:)
пример - 3000 файлов, с img1.jpg по img3000.jpg.
запускаю omg.bat, он создает mylist.txt 3 штуки, в каждом по N кол-во имен файлов, по алфавитному порядку, где в первом mylist.txt, например список файлов с img1.jpg по 1000, во втором mylist2.txt с img1001.jpg по 2000, в третьем с img2001 по 3000 соответственно.
файлы в реальности отличаются в названии только датой, например Ёолочка_01-05-2017_01h25m22s400ms или Будка со злой собакой_25-03-2017_00h09m48s793ms. Каждое наименование файлов лежит у себя в отдельной папке.

Iska
06-08-2018, 23:30
bidjo, jpeg сжимать малоосмысленно. И почему ffmpeg-ом, »?

bidjo
07-08-2018, 09:19
я неправильно выразился:) конвертация кучи jpg в видео.
в топикстарте инфу подправил. приношу свои извинения.

Iska
07-08-2018, 17:25
На PowerShell:
Param (
[System.String]$sSourceFolder = "C:\Sample",
[System.String]$sDestFileNamePattern = 'mylist:.txt',
[System.Int32]$iCountLimit = 960

)

if([System.IO.Directory]::Exists($sSourceFolder)) {
Get-ChildItem -Path "$sSourceFolder\*.*" -File -Include '*.jpg', '*.jpeg', '*.jpe' | ForEach-Object -Begin { $i = 1; $iCount = 1; $sContent = '' } -Process {
$sContent += "file '$($_.Name)'`r`n"

if($i -ge $iCountLimit) {
$sResultFile = "$sSourceFolder\$($sDestFileNamePattern.Replace(":", $iCount.ToString("0000")))"
Out-File -InputObject $sContent -FilePath $sResultFile -Encoding ASCII -NoNewline

Write-Host "[$sResultFile] : $i file(s)." -ForegroundColor Cyan

$i = 1
$iCount++
$sContent = ''
} else {
$i++
}
}

if($sContent -ne '') {
$i--
$sResultFile = "$sSourceFolder\$($sDestFileNamePattern.Replace(":", $iCount.ToString("0000")))"
Out-File -InputObject $sContent -FilePath $sResultFile -Encoding ascii

Write-Host "[$sResultFile] : $i file(s)." -ForegroundColor Cyan
}
} else {
Write-Host "Can't find source folder [$sSourceFolder]." -ForegroundColor Red
}
Файлы никак не сортируются.

bidjo
07-08-2018, 20:03
спасибо за ответ.
выполнил скрипт, в mylist получил file '??? ?? ????? 114_04-08-2018_21h32m16s300ms.jpg' и таких кучу.
видимо не хватает как в cmd chcp 1251 , токак как его в powershell прописывать?

Iska
07-08-2018, 20:19
в mylist получил file '??? ?? ????? 114_04-08-2018_21h32m16s300ms.jpg' и таких кучу. »
Замените в двух местах:
… -Encoding ASCII …
на:
… -Encoding 'Default' …

bidjo
08-08-2018, 09:23
danke very much! работает. спасибо




© OSzone.net 2001-2012