Войти

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


Kyja
11-08-2018, 01:03
Здравствуйте, скажу сразу все мои bat файлы были очень примитивны и я очень плохо в них понимаю.
Сейчас возникла такая задача решения которой не могу понять сам буду очень признателен за помощь

Подскажите как сделать следующие

1. Найти первый фаил в папке C:\test с расширением mp4

2. Создать папку равную имени найденного mp4 файла (C:\test\name)

3. запустить команду
ffmpeg -i 123.mp4 -vf scale=320:240 -c:v libx264 -preset slow -crf 31 \name\123.mp4 -r 1 -ss 00:00:04 -t 00:00:01 -f image2 4\images%05d.png
где 123.mp4 равен имени найденного файла
где \name\123.mp4 равен созданной папке\имя найденного файла

4. дожидаться появления в папке созданной в шаге 2 файла формата .png

5. удалить найденный в шаге 1 mp4 фаил

6. Ожидать/перейти к следующему mp4 файлу и начать весь цикл заново

Заранее спасибо

Iska
11-08-2018, 02:07
ffmpeg -i 123.mp4 -vf scale=320:240 -c:v libx264 -preset slow -crf 31 4\32212.mp4 -r 1 -ss 00:00:04 -t 00:00:01 -f image2 4\images%05d.png
где 123.mp4 равен имени найденного файла
где C:\test\name\32212.mp4 равен созданной папке\имя найденного файла »
В команде нет «C:\test\name\32212.mp4». Проверьте её.

Kyja
11-08-2018, 11:28
Извиняюсь поставил корректный пример

3. запустить команду
ffmpeg -i 123.mp4 -vf scale=320:240 -c:v libx264 -preset slow -crf 31 \name\123.mp4 -r 1 -ss 00:00:04 -t 00:00:01 -f image2 4\images%05d.png
где 123.mp4 равен имени найденного файла
где \name\123.mp4 равен созданной папке\имя найденного файла

Iska
11-08-2018, 12:03
Извиняюсь поставил корректный пример
3. запустить команду
ffmpeg -i 123.mp4 -vf scale=320:240 -c:v libx264 -preset slow -crf 31 \name\32212.mp4 -r 1 -ss 00:00:04 -t 00:00:01 -f image2 4\images%05d.png
где 123.mp4 равен имени найденного файла
где \name\32212.mp4 равен созданной папке\имя найденного файла »
Понятней не стало. Почему в одной и той же команде имя найденного файла сначала одно, затем тут же — другое?


Итак, давайте уточним ещё раз.

1. Найти первый фаил в папке C:\test с расширением mp4
Например, первым нашли файл C:\test\bla-bla-bla.mp4.

2. Создать папку равную имени найденного mp4 файла (C:\test\name)
Создаём каталог C:\test\bla-bla-bla.

3. запустить команду
ffmpeg -i 123.mp4 -vf scale=320:240 -c:v libx264 -preset slow -crf 31 \name\32212.mp4 -r 1 -ss 00:00:04 -t 00:00:01 -f image2 4\images%05d.png
где 123.mp4 равен имени найденного файла
где \name\32212.mp4 равен созданной папке\имя найденного файла
Исполняем команду:
ffmpeg.exe -i bla-bla-bla.mp4 -vf scale=320:240 -c:v libx264 -preset slow -crf 31 \bla-bla-bla\bla-bla-bla.mp4 -r 1 -ss 00:00:04 -t 00:00:01 -f image2 4\images%05d.png

4. дожидаться появления в папке созданной в шаге 2 файла формата .png
Зачем ждать появления файла? Пока не отработает ffmpeg.exe — управление в пакетный файл не вернётся.

5. удалить найденный в шаге 1 mp4 фаил
Удаляем файл C:\test\bla-bla-bla.mp4.

6. Ожидать/перейти к следующему mp4 файлу и начать весь цикл заново
Переходим к обработке следующего файл *.mp4.

Так?

Kyja
11-08-2018, 12:17
Зачем ждать появления файла? Пока не отработает ffmpeg.exe — управление в пакетный файл не вернётся. »

Не знал этого момента да тогда конечно ждать появления не надо.

Да все совершенно верно как Вы описали

Iska
11-08-2018, 12:37
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=c:\name

pushd "%sSourceFolder%" && (
for %%i in ("*.mp4") do (
echo [%%~i]
2>nul md "%%~ni"
ffmpeg.exe -i %%~i -vf scale=320:240 -c:v libx264 -preset slow -crf 31 \%%~ni\%%~i -r 1 -ss 00:00:04 -t 00:00:01 -f image2 4\images%05d.png
)
popd
) || (
echo Can't find source folder [%sSourceFolder%].
exit /b 1
)

endlocal
exit /b 0

Но работать не работает, разбирайтесь с параметрами команды ffmpeg (мне разбираться методом обратной инженерии, что и как именно Вы хотели получить, и как надо было делать на самом деле, желания нет).

Kyja
11-08-2018, 13:05
Огромное спасибо все работает!




© OSzone.net 2001-2012