Startertmenü - Problem mit Syntax

German support forum

Moderators: white, Hacker, Stefan2

Post Reply
User avatar
Wilhelm M.
Power Member
Power Member
Posts: 990
Joined: 2003-06-05, 10:45 UTC

Startertmenü - Problem mit Syntax

Post by *Wilhelm M. »

Ich würde gerne ins Startermenü einen Befehl einfügen, um mittel ffmpeg die Integrität einer Videodatei zu überprüfen. Die Standardsyntax für diesen Befehl lautet: ffmpeg.exe -v error -i video.mp4 -f null - >error.log 2>&1.
Mein Versuch schaut so aus:
Kommando: d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe
Parameter: -v error -i %P%N -f null - >%Perror.log 2>&1.
Die error.log soll im Verzeichnis erzeugt werden, wo die video.mp4 steht, deswegen %Perror.log.
Funktioniert leider nicht. Die error.log wird nicht erzeugt.
Habe natürlich mit den Parametern herumprobiert. Z.B. -v error -i ins KOmmando geschrieben etc.
Nix geht.
Kann jemand den Fehler entdecken? :oops:
Grüße/Regards,
Wilhelm
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6450
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Re: Startertmenü - Problem mit Syntax

Post by *Horst.Epp »

Die Ausgabeumleitungen sind Funktionen des Cmd.
Mach eine cmd (Batch) Datei und rufe die mit den entsprechenden Parametern auf.
Windows 11 Home x64 Version 23H2 (OS Build 22631.3374)
TC 11.03 x64 / x86
Everything 1.5.0.1371a (x64), Everything Toolbar 1.3.2, Listary Pro 6.3.0.69
QAP 11.6.3.2 x64
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Startertmenü - Problem mit Syntax

Post by *Stefan2 »

Ich denke, Horst.Epp ist auf der richtigen Spur.

Probier mal

Kommando: cmd /k
Parameter: "d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe" -v error -i %P%N -f null - >"%Perror.log" 2>&1.



Aber ich kenne die Syntax von ffmpeg.exe nicht, und eventuell benötigen wir noch ein paar Anführungszeichen....




 
User avatar
Wilhelm M.
Power Member
Power Member
Posts: 990
Joined: 2003-06-05, 10:45 UTC

Re: Startertmenü - Problem mit Syntax

Post by *Wilhelm M. »

Ich glaube auch, dass Horst.Epp auf der richtigen Spur ist, aber mit den Details komme ich nicht klar.
Dein Vorschlag resultiert in; "Der Befehl d:\Video\Pazera MP4 wurde nicht gefunden..."

Übrigens, die Syntax des ffmpeg-Befehls stimmt schon, wenn ich ihn in ein Batchfile schreibe und dabei den Pfad zur Videodatei fest hineinschreibe, dann funktioniert es. Nur aus dem Startermenü mit %P%N funktioniert es nicht.

(Witzig: habe versuchsweise die Anführungszeichen weggelassen und das ergibt dann die Fehlermeldung "Der Befehl d:\Video\Pazera wurde nicht gefunden...", dann bricht er schon nach Pazera ab. )
Grüße/Regards,
Wilhelm
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Startertmenü - Problem mit Syntax

Post by *Stefan2 »

Das kommt vom Quoting. (Hinweis: das %P%N wird vom TC ebenfalls automatisch in Anführungszeichen gesetzt, falls der Pfad Leerzeichen enthält).


Versuchs mal so:
Parameter: " "d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe" -v error -i %P%N -f null - >"%Perror.log" 2>&1"
oder so
Parameter: "" "d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe" -v error -i %P%N -f null - >"%Perror.log" 2>&1""
oder so
Parameter: " "d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe" -v error -i %P%N -f null - >"%Perror.log"" 2>&1



Versuche es mal mit einem Pfad ohne Leerzeichen (und dann ohne die extra Anführungszeichen).



Füge ein Fragezeichen als ersten Parameter hinzu:
Parameter: ?" "d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe" -v error -i %P%N -f null - >"%Perror.log" 2>&1"
Dadurch kannst du das tatsächlich gesendete Kommando (vom TC bereits expandiert) überprüfen.

Oder kontrolliere es durch ECHO:

Code: Select all

TOTALCMD#BAR#DATA
cmd /k ECHO
""d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe" -v error -i %P%N -f null - >"%Perror.log"" 2>&1
C:\Windows\system32\cmd.exe
Test command


-1
Ergebnis bei mir:

Code: Select all

""d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe" -v error -i C:\Temp\ -f null - >"C:\Temp\error.log""
Hinweis: der nächste Interpreter (hier fmpeg.exe) wird sich "normalerweiße" die äußeren Anführungszeichen entfernen und dann mit dem Rest weiterarbeiten.






Bist du sicher, dass "-f null - " die korrekte Syntax ist?
Eben auch "null" statt "nul"? ...
-f ==> Format as Null?
Und was soll das Minuszeichen? ..verweis auf den aktuellen Ausgabestream der Kommandozeile?
Ich nehme mal an der Befehl gliedert sich folgendermaßen?
-v error (Output "Verbose" bei "Error")
-i C:\Temp\ (Input)
-f null - (Format als Null den aktuellen Stream der Kommandozeile (stdout))
>"C:\Temp\error.log" (Leite die Ausgabe um in Logdatei)
Aber du sagst ja, dass es bei dir direkt in der Kommandozeile funktioniert, ...dann kann es vom TC aus nur am Quoting liegen.


 
User avatar
Wilhelm M.
Power Member
Power Member
Posts: 990
Joined: 2003-06-05, 10:45 UTC

Re: Startertmenü - Problem mit Syntax

Post by *Wilhelm M. »

Lieber Stefan2, Deine Hilfsbereitschaft ist sagenhaft! (Nicht nur in diesem Fall.)
Viele nüzliche Tipps, die ich nach und nach ausprobieren werde.
Gleich jetzt: Pfade ohne Leerzeichen habe ich schon probiert (ffmpeg wird ja von den verschiedensten Video-Tools mitgeliefert, da hat man dann die Qual der Wahl.)
Ja, im Batchfile direkt funtioniert es. Also z.B. "d:\Video\Pazera MP4 To AVI\tools\FFmpeg\ffmpeg.exe" -v error -i video.mp4 -f null - >F:\video\temp\error.log 2>&1 macht, was es soll. Nur wenn ich mit %P%N bzw. %Perror.log arbeite, wird irgendwas nicht gefunden. Also hast du recht, das Quoting ist sicher ein Problem. Aber auch was Hort.Epp geschrieben hat, ist nicht von der Hand zu weisen. Diese Ausgabeumleitungen -> bzw. > funktionieren aus TC heraus vielleicht nicht.
Wie gesagt, ich probiere. Falls ich erfolgreich bin, schreibe ich noch einmal kurz.
Grüße/Regards,
Wilhelm
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Startertmenü - Problem mit Syntax

Post by *Stefan2 »

Nema problema :wink:


- - -

Wilhelm M. wrote: 2021-08-30, 14:55 UTC ... Diese Ausgabeumleitungen -> bzw. > funktionieren aus TC heraus vielleicht nicht.
...


Doch, die funktioniert grundsätzlich:


Code: Select all

TOTALCMD#BAR#DATA
cmd /k 
dir *.txt >error2.log 2>&1
C:\Windows\system32\cmd.exe
Test command


-1
error2.log (hierbei gab es kein Fehler, es wurde mir nur stdout ausgegeben, hier verkürzt dargestellt)

Code: Select all

10.10.2019  11:03                 0 2020-DEVICES00-EXCLUDES.txt
15.04.2021  09:27               537 2020-DEVICES00.txt
16.06.2020  08:44             2.264 2020-DEVICES01.txt
25.05.2020  11:37               351 2020-DEVICES02.txt

- - -

Code: Select all

TOTALCMD#BAR#DATA
cmd /k 
copy test.txt C:\Windows >error3.log 2>&1
C:\Windows\system32\cmd.exe
Test command


-1
error3.log (Umleitung von stdout , Kanal 1, und des Fehlerstreams stderr, Kanal 2)

Code: Select all

Zugriff verweigert
        0 Datei(en) kopiert.


- - -

Code: Select all

TOTALCMD#BAR#DATA
cmd /k 
copy test.txt C:\Windows >error4.log 
C:\Windows\system32\cmd.exe
Test command


-1
error4.log (nur stdout, ohne stderr)

Code: Select all

        0 Datei(en) kopiert.


- - -


Übrigens wird die Ausgabeumleitung nur mit dem Zeichen > eingeleitet (oder >> für Anhängen statt Überschreiben).
Dieses "- >" Konstrukt bedeutet etwas anderes, wie in meinem letzten Post bereits vermutet.
Es sind ein Argument des Programmes (verwende stdin bzw. stdout) und ein Befehl der CMD (starte Umleitung der Kanäle).


Erklärung ">error3.log 2>&1":
stdout, Kanal 1 ist implizit bei "> oder >>" und muss nicht angegeben werden.
Man muss nur stderr, Kanal 2 bei Bedarf angeben, und dann auf Wunsch auch Kanal 1.

">error3.log" leitet die Ausgabe von stdout um in eine Textdatei namens "error3.log" ,
"2>&1" besagt, dass man stderr zusätzlich umgeleitet haben möchte, nämlich nach stdout. Und dann Beides zusammen in die Textdatei.



Ich habe mal kurz gegoogelt:
https://docs.microsoft.com/de-de/troubleshoot/cpp/redirecting-error-command-prompt
https://openbook.rheinwerk-verlag.de/c_von_a_bis_z/016_c_ein_ausgabe_funktionen_010.htm#mj9dbf91fb0f12de81b779d8be658b7b63
 
User avatar
Wilhelm M.
Power Member
Power Member
Posts: 990
Joined: 2003-06-05, 10:45 UTC

Re: Startertmenü - Problem mit Syntax

Post by *Wilhelm M. »

Es ist schon zum Aus der Haut fahren. Ein Batchfile Check.bat mit dem einzigen Inhalt:
ffmpeg.exe -v error -i f:\Video\Temp\Testvideo.mp4 -f null - >f:\Video\Temp\error.log 2>&1
funktioniert einwandfrei. (Die Check.bat liegt im selben Verzeichnis wie ffmpeg.exe, deswegen kein Pfad.).

Aber in TC funktioniert es nicht - das DOS-Fenster blitzt nur kurz auf und dann ist nichts mehr. Keine Fehlermeldung, kein error.log.
Die Parameter in Startermenü schauen so aus: -v error -i %P%N -f null - >%Perror.log 2>&1
Mit dem ? vor den Parametern wird folgendes angezeigt:
-v error -i f:\Video\Temp\Testvideo.mp4 -f null - >f:\Video\Temp\error.log 2>&1
Das passt doch eigentlich und wenn ich mich nicht sehr irre, dann ist das exakt gleich wie im Batchfile.
Jetzt habe ich noch als letzten Versuch einfach die Parameter in die Kommandozeile geschrieben - same old story.
Grüße/Regards,
Wilhelm
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6450
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Re: Startertmenü - Problem mit Syntax

Post by *Horst.Epp »

Warum eigentlich so kompliziert ?
Nimm eine Batch-Datei und rufe diese aus dem Start-Menue oder einem Button auf.
Als Befehl cmd.exe
und als Parameter /C %P%N %P
Die entsprechend markierte Datei steht dann als %1 in der Batch Datei zur Verfügung
und der Pfad zum Verzeichnis für den Log als %2.
Windows 11 Home x64 Version 23H2 (OS Build 22631.3374)
TC 11.03 x64 / x86
Everything 1.5.0.1371a (x64), Everything Toolbar 1.3.2, Listary Pro 6.3.0.69
QAP 11.6.3.2 x64
User avatar
Wilhelm M.
Power Member
Power Member
Posts: 990
Joined: 2003-06-05, 10:45 UTC

Re: Startertmenü - Problem mit Syntax

Post by *Wilhelm M. »

Hab ich das richtig verstanden?
Befehl: cmd.exe check.bat
Parameter: /C %P%N %P

Edit: vergiss die (dumme) Frage. Habs herausgefunden.
Befehl: cmd.exe
Parameter: /C \yxz\check.bat %P%N %P
Läuft wie geschmiert :-)

Und Danke! An Euch beide!
Grüße/Regards,
Wilhelm
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Startertmenü - Problem mit Syntax

Post by *Stefan2 »

Wie gesagt, die Umleitungsfunktion ">log.txt 2>&1" gehört zur CMD.exe, daher

Kommando: cmd /k
Parameter: " "L:\aufwerk\Pfad zu\ffMpeg\ffmpeg.exe" -v error -i %P%N -f null - >> "%Perror.log" 2>&1 "


Code: Select all

TOTALCMD#BAR#DATA
cmd /k
" "C:\A\ff Mp eg\ffmpeg.exe" -v error -i %P%N -f null - >> "%Perror.log" 2>&1 "
%COMMANDER_PATH%\TOTALCMD.EXE,2
ffmpeg


-1


Mittels %P%N wird die ausgewählte Datei inklusive Pfad übergeben (TC fügt Anführungszeichen automatisch an, falls nötig)
Mit %P wird die Logdatei im aktuellem Pfad geschrieben.


" "L:\aufwerk\Pfad zu\ffMpeg\ffmpeg.exe" -v error -i %P%N -f null - >> "%Perror.log" 2>&1 "
Mit den äußeren Anführungszeichen wird der gesamte String von TC an die CMD.exe übergeben, diese entfernt die äußeren Anführungszeichen.
"L:\aufwerk\Pfad zu\ffMpeg\ffmpeg.exe" -v error -i %P%N -f null - >> "%Perror.log" 2>&1
Dann wird versucht, ffmped.exe in einem Pfad mit Leerzeichen zu starten, daher der Pfad in Anführungszeichen.
%P%N wird vom TC automatisch in Anführungszeichen gesetzt, falls ein Leerzeichen im Pfad entdeckt wurde.
"%Perror.log" wird ebenfalls vorsichtshalber von uns selbst in Anführungszeichen gesetzt, falls der %P fad Leerzeichen enthalten sollte.





TEST

Wähle eine *.mp4 und klicke auf den Button:

error.log
C:\A\ffMpeg\ffmpeg.exe: Invalid data found when processing input
C:\A\ff Mp eg\__INFOs.txt: Invalid data found when processing input
C:\A\ffMpeg\__INFOs.txt: Invalid data found when processing input

Ich habe bei mir die Ausgabeumleitung zu ">>" ergänzt, um das Log nicht
zu überschreiben, sondern dort anzufügen, und etwas mit Leerzeichen 'rum gespielt.


Was soll den dieser Befehl bewirken? Ich habe wohl nicht mit einer "testwürdigen" MP4-Datei getestet :D



- - -

2Wilhelm M.
Poste doch mal deine komplette Lösung, damit andere, welche auf diesen Thread stoßen, auch etwas davon haben.

 
User avatar
Wilhelm M.
Power Member
Power Member
Posts: 990
Joined: 2003-06-05, 10:45 UTC

Re: Startertmenü - Problem mit Syntax

Post by *Wilhelm M. »

Kommando: cmd.exe
Parameter; /C \pfad_zum_batchfile\check.bat %P%N %P.

In der check.bat (befindet sich im Verzeichnis von ffmpeg.exe) steht nur:
\pfad_zu_ffmpeg\ffmpeg.exe -v error -i %1 -f null - >%2error.log 2>&1.

Der Pfad in der check.bat ist anscheinend notwendig, weil die check.bat aus TC heraus aufgerufen wird. Andernfalls wird ffmpeg nicht gefunden.
Grüße/Regards,
Wilhelm
User avatar
Horst.Epp
Power Member
Power Member
Posts: 6450
Joined: 2003-02-06, 17:36 UTC
Location: Germany

Re: Startertmenü - Problem mit Syntax

Post by *Horst.Epp »

Wilhelm M. wrote: 2021-08-31, 10:19 UTC ...
Der Pfad in der check.bat ist anscheinend notwendig, weil die check.bat aus TC heraus aufgerufen wird. Andernfalls wird ffmpeg nicht gefunden.
Den Startpfad kann man beim Anlegen eines Startmenue Eintrags oder Buttons auch festlegen.
Windows 11 Home x64 Version 23H2 (OS Build 22631.3374)
TC 11.03 x64 / x86
Everything 1.5.0.1371a (x64), Everything Toolbar 1.3.2, Listary Pro 6.3.0.69
QAP 11.6.3.2 x64
Post Reply