Windows: passa attraverso il batch di testo


0

Io uso il software MyFFVideoConverter. Mi piacerebbe eseguire uno script batch. Il mio codice assomiglia a questo:

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

Funziona ma mi piacerebbe usare a mylist.txt comando invece -i intro.jpg. Lo script dovrebbe selezionare solo la prima voce nel file mylist.txt file, per esempio intro1.jpge cancellare la prima voce in seguito. La prossima volta che lo script userebbe intro2.jpg ed elimina questa nuova prima voce e così via.


Il mylist.txt dovrebbe essere simile a questo: intro1.jpg intro2.jpg intro3.jpg e così via. Una voce per ogni riga.
J. J.

Risposte:


0

Puoi avvolgere il tuo attuale comando in questo modo:

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

(sostituisci il ... con tutte le altre opzioni)

Questo ciclo eseguirà il comando una volta per riga mylist.txt, ogni volta usando il contenuto della linea come parametro del -i interruttore.

Questo non cancella nulla dal mylist.txt file. Puoi rimuoverlo completamente alla fine con rm.

Se hai davvero bisogno solo di scegliere la prima riga e rimuoverla, allora:

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

e quindi per rimuovere la prima riga da mylist.txt Ti rimando a https://unix.stackexchange.com/questions/96226/delete-first-line-of-a-file che dà un sacco di soluzioni.

Tutto quanto sopra suppone che le tue linee (nomi di file) non abbiano spazi in esse, o caratteri interpretati dalla shell (|, & amp ;, ecc.). In tal caso, dovrai essere più cauto e proteggere le cose con le virgolette.


Non ha funzionato. Il seguente script ha funzionato ma ha sempre la stessa immagine dell'immagine di sfondo: 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.

Ho provato questo: 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 ma non ho avuto successo
J. J.

L'ho provato con questo script: dmeresources.com/index.php/professional-community/news-blogs/... Ora utilizzo solo ffmpeg.exe dalla cartella myvideoconverter.
J. J.

Non sapevo che fossi su Windows, mi dispiace. La mia risposta è per i sistemi basati su Unix. Non ho idea di come farlo girare sotto Windows, ma sono sicuro che anche lì puoi fare loop.
Patrick Mevzek

Ho trovato questo per scorrere il testo: ss64.com/nt/for_f.html , ma non so come deve essere il codice nel mio caso.
J. J.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.