FOR Schleife Befehlsausgabe als Variable setzen, Problem mit Space im Verzeichnis
Ich möchte gerne folgendes machen. Einen Befehl ausführen und die Ausgabe als Variable setzen.
Der Befehl lautet:
"%FFPROBE%" -v error -select_streams v:0 -show_entries stream=height,width -of csv=s=x:p=0 "%INPUTFILE%"
Wenn ich den so in der Batch stehen habe, bekomme ich als Ausgabe : 1920x1080
Diese Ausgabe hätte ich gerne als Variable RESOLUTION
Meine for Schleife sieht so aus:
Das Ergebnis:
Der Befehl "E:\MEIN" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Obwohl das Verzeichnis in den Gänsefüsschen ist und der Befehl alleine funktioniert, warum tut er das in der for Schleife nicht?
Der Befehl lautet:
"%FFPROBE%" -v error -select_streams v:0 -show_entries stream=height,width -of csv=s=x:p=0 "%INPUTFILE%"
Wenn ich den so in der Batch stehen habe, bekomme ich als Ausgabe : 1920x1080
Diese Ausgabe hätte ich gerne als Variable RESOLUTION
Meine for Schleife sieht so aus:
set RESOLUTION=Unknown
set FFPROBE=C:\Mein Test\FFPROBE.exe
setlocal EnableDelayedExpansion
FOR /F "tokens=*" %%A IN ('"%FFPROBE%" -v error -select_streams v:0 -show_entries stream=height,width -of csv=s=x:p=0 "%INPUTFILE%"') DO (
SET RESOLUTION=%%A
echo !RESOLUTION!
)
echo Resolution = !RESOLUTION!
Das Ergebnis:
Der Befehl "E:\MEIN" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Obwohl das Verzeichnis in den Gänsefüsschen ist und der Befehl alleine funktioniert, warum tut er das in der for Schleife nicht?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 463190
Url: https://administrator.de/forum/for-schleife-befehlsausgabe-als-variable-setzen-problem-mit-space-im-verzeichnis-463190.html
Ausgedruckt am: 06.01.2025 um 20:01 Uhr
11 Kommentare
Neuester Kommentar
Hallo,
Eben nicht. Schau dir mal deine Zeile 2 an. Schau dir das Ergebniss an: und dann und dann noch
Das ist nicht was du meinst was gemeint war.
Gruß,
Peter
Eben nicht. Schau dir mal deine Zeile 2 an. Schau dir das Ergebniss an:
set FFPROBE=C:\Mein Test\FFPROBE.exe
Set FFProbe
set FFPROBE="C:\Mein Test\FFPROBE.exe"
Set FFProbe
set "FFPROBE=C:\Mein Test\FFPROBE.exe"
Set FFProbe
Das ist nicht was du meinst was gemeint war.
Gruß,
Peter
Hallo,
Und seine Antwort hast du doch gesehen. Bei vielen darfst du heute nicht mehr kleingeschnibbelte Kartoffeln schreiben wenn du über ein Pommesrezept redest, weil es dann Kartoffelsalat gibt
Gruß,
Peter
Und seine Antwort hast du doch gesehen. Bei vielen darfst du heute nicht mehr kleingeschnibbelte Kartoffeln schreiben wenn du über ein Pommesrezept redest, weil es dann Kartoffelsalat gibt
Gruß,
Peter
Das liegt einerseits an den fehlenden Gänsefüßchen wie schon erwähnt und andererseits fehlen noch ein paar Escapes für die Nutzung im For-Befehl (Für das "=" und das ","), so läuft es ...
@echo off &setocal
set "RESOLUTION=Unknown"
set "FFPROBE=C:\Mein Test\FFPROBE.exe"
set "INPUTFILE=C:\Dateien\file.mp4"
FOR /F "delims=" %%A IN ('"%FFPROBE%" -v error -select_streams v:0 -show_entries stream^=height^,width -of csv^=s^=x:p^=0 "%INPUTFILE%"') DO SET "RESOLUTION=%%A"
echo Resolution = %RESOLUTION%
Servus @Kriegstreiber ,
wie @rubberman schon vorgeschlagen hat (evt. hast du's übersehen?), nutze call vor dem Pfad
(positiv getestet)
Grüße Uwe
wie @rubberman schon vorgeschlagen hat (evt. hast du's übersehen?), nutze call vor dem Pfad
FOR /F "delims=" %%A IN ('call "%FFPROBE%" -v error -select_streams v:0 -show_entries stream^=height^,width -of csv^=s^=x:p^=0 "%INPUTFILE%"') DO SET "RESOLUTION=%%A"
Grüße Uwe