Wie führe ich die string-Operationen auf Variablen in einer for-Schleife?
Das klingt dumm, aber ich kann nicht ankommen es zu wirken. Ich denke, dass ich einfach nicht' zu verstehen, den Unterschied zwischen %%v, %v% and %v
Hier ist, was ich versuche zu tun:
for %%v in (*.flv) do ffmpeg.exe -i "%%v" -y -f mjpeg -ss 0.001 -vframes 1 -an "%%v.jpg"
Diese erfolgreich generiert ein thumbnail für jedes der Filme, aber das problem ist:
movie.flv -> movie.flv.jpg
Also, was ich möchte zu tun ist, ziehen die letzten 4 Zeichen aus %%v
und verwenden, die für die zweite variable.
Ich habe versucht, Dinge wie diese:
%%v:~0,-3%
Aber es funktioniert nicht, noch sind irgendwelche der Iterationen, die, der ich denken konnte.
Irgendwelche Ideen?
- wenn "set" und "echo" in der Zeile FOR-Schleife: nslookup -vc -type=TXT twitter.com 8.8.8.8 | find """" | for /F "tokens=*" %f in ('findstr $') do @(echo|set /P str=%f)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie %%~nV zu erhalten, die mit dem Namen nur.
Für Leute, die diesen thread gefunden auf der Suche wie Sie tatsächlich ausführen, string-Operationen auf for-Schleife Variablen (verwendet verzögerte Erweiterung):
Aus "Hilfe":
Ich bin nicht so gut in batch-als die oben genannten (ich benutze WSH oder anderen script-Sprachen statt), aber ich kann versuchen und zu erklären, %%v, %v und v%.
Den ersten beiden Formen verwendet werden, in einer
for
Schleife.help for
erklärt den Unterschied, die erste form verwendet wird, in einer batch-Datei, während der zweite wird verwendet, wenn die Eingabe (einfügen) der Befehl direkt an der Eingabeaufforderung.Die Letzte form nur ersetzt der name der variable (environment-variable) mit Wert:
Noch eine weitere Möglichkeit, die ich bevorzuge, ist das erstellen einer sub-routine (:processMpeg), dass ich für jedes element in der For-Schleife, zu dem ich gehe in den %%v variable.