Windows: pętla wsadowa tekstu

0

Używam oprogramowania MyFFVideoConverter. Chciałbym uruchomić skrypt wsadowy. Mój kod wygląda tak:

-i intro.jpg -i <input_file> -codec:v libx264 -s 1920x1080 -acodec copy -strict experimental -movflags faststart -t 00:10:10.00 <output_file>

Działa, ale chciałbym użyć a mylist.txt zamiast tego polecenie -i intro.jpg. Skrypt powinien wybrać tylko pierwszy wpis w mylist.txt na przykład plik intro1.jpgi usuń pierwszy wpis później. Przy następnym użyciu skryptu intro2.jpg i usuń ten pierwszy pierwszy wpis i tak dalej.

J. J.
źródło
Mylist.txt wyglądałby tak: intro1.jpg intro2.jpg intro3.jpg i tak dalej. Jeden wpis dla każdej linii.
J. J.

Odpowiedzi:

0

Możesz zawinąć swoje obecne polecenie w ten sposób:

for line in $(cat mylist.txt); do MyFFVideoConverter ... -i $line ; done

(zastąp ... wszystkimi innymi opcjami)

Ta pętla uruchomi twoje polecenie raz w linii mylist.txt, za każdym razem używając zawartości linii jako parametru -i przełącznik.

To nie usuwa niczego z mylist.txt plik. Możesz usunąć go całkowicie pod koniec rm.

Jeśli naprawdę potrzebujesz tylko wybrać pierwszą linię i ją usunąć, to:

line = $(head -1 mylist.txt)
MyFFVideoConverter ... -i $line

a następnie, aby usunąć pierwszą linię z mylist.txt Odraczam cię https://unix.stackexchange.com/questions/96226/delete-first-line-of-a-file co daje kilka rozwiązań.

Wszystkie powyższe założenia zakładają, że linie (nazwy plików) nie zawierają spacji lub znaków interpretowanych przez powłokę (| i & amp ;, itd.). Jeśli tak jest, musisz być bardziej ostrożny i chronić rzeczy za pomocą cytatów.

Patrick Mevzek
źródło
Nie działało. Następujący skrypt działał, ale zawsze ma ten sam obraz co obraz tła: C:\VideoConverter\Applications\ffmpeg.exe -f image2 -loop 1 -framerate 0.1 -i pic004.jpg -i %~d1%~p1%~n1.mp3 -codec:v libx264 -s 1920x1080 -acodec copy -strict experimental -movflags faststart -t 00:10:10.00 -f mp4 %~d1%~p1%~n1.mp4
J. J.
Próbowałem tego: C:\VideoConverter\Applications\ffmpeg.exe for line in $(cat mylist.txt); -f image2 -loop 1 -framerate 0.1 -i %~d1%~p1%~n1.mp3 -codec:v libx264 -s 1920x1080 -acodec copy -strict experimental -movflags faststart -t 00:10:10.00 -f mp4 %~d1%~p1%~n1.mp4 -i $line ; done ale nie odniosłem sukcesu
J. J.
Próbowałem tego skryptu: dmeresources.com/index.php/professional-community/news-blogs/… Używam teraz tylko ffmpeg.exe z folderu myvideoconverter.
J. J.
Przepraszam, nie wiedziałem, że jesteś w systemie Windows. Moja odpowiedź dotyczy systemów opartych na Uniksie. Nie mam pojęcia, jak go uruchomić w systemie Windows, ale jestem pewien, że możesz tam również robić pętle.
Patrick Mevzek
Znalazłem to do przechodzenia przez tekst: ss64.com/nt/for_f.html , ale nie wiem jak kod ma wyglądać w moim przypadku.
J. J.