Пакетный файл Windows: для / F только чтение первой строки mylist.txt и удаление первой строки после - PullRequest
0 голосов
/ 20 мая 2018

Я запускаю пакетный скрипт:

FOR /F "tokens=1" %%F IN (mylist.txt) do C:\VideoConverter\Applications\ffmpeg.exe ^
-f image2 -loop 1 -framerate 0.1 -i "%%~F" -i "%~dpn1.mp3" -codec:v libx264 ^
-s 1920x1080 -acodec copy -strict experimental -movflags faststart -t 00:10:10.00 ^
-f mp4 "%~dpn1.mp4"

В моей папке находятся следующие файлы:

file001.mp3
file002.mp3
file003.mp3

mylist.txt содержит:

pic001.jpg 
pic002.jpg 
pic003.jpg

Atна данный момент скрипт создает 3 видео с 3 разными фоновыми изображениями для каждого mp3 в папке.Это не верно.

Я хочу создать только эти три видео.

video 1 = file001.mp3 + pic001.jpg (line1) 
video 2 = file002.mp3 + pic002.jpg (line2)
video 3 = file003.mp3 + pic003.jpg (line3)

Может кто-нибудь помочь мне с командой for /f?Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 20 мая 2018

Я бы перебирал видео, используя for, вставлял mylist.txt в цикл for через стандартный ввод (с <) и позволял set /p захватывать его построчно (один раз за циклитерация).Как то так:

@echo off & setlocal

(
    for %%I in (*.mp3) do (

        rem // set /P grabs one line of input from stdin
        set /P "imagefile="

        setlocal enabledelayedexpansion
        if defined imagefile call :build "%%~I" "!imagefile!" "%%~dpnI.mp4"
        endlocal

        set "imagefile="
    )
) < mylist.txt
rem // The line above dumps mylist.txt into stdin, letting set /P grab one line at a time.

goto :EOF

:build <in_mp3> <in_image> <outfile>
C:\VideoConverter\Applications\ffmpeg.exe -f image2 -loop 1 -framerate 0.1 ^
-i "%~1" -i "%~2" -codec:v libx264 -s 1920x1080 -acodec copy -strict experimental ^
-movflags faststart -t 00:10:10.00 -f mp4 "%~3"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...