Der "-tmp" -Parameter von MP4Box benötigt 2 Backslashes

361
Derp

Ich arbeite unter Windows 7 Ultimate SP1 x64 mit MP4Box - GPAC Version 0.7.2-DEV-rev357-g7115eeb8-master.

Ich habe eine BAT-Datei wie folgt erstellt:

mp4box -add %1#trackID=1:name= -add %2#trackID=1:name= -tmp "%~dp1\" -new "%~n1_new.mp4" 

was gut funktioniert, aber bevor es hinzugefügt wurde \, %~dp1\gab es den Fehler:

Error - 2 input names specified, please check usage 

Warum braucht es 2 Backslashes, um zu funktionieren?

Wenn es wichtig ist, ziehe ich das Video und das Audio einfach in die BAT-Datei.

Übrigens, ist das in %1#trackID=1:name=Ordnung oder sollte ich es ändern "%~1#trackID=1:name="?

0

1 Antwort auf die Frage

0
Pimp Juice IT

Um dies zu beheben, können Sie Teilstrings mit Batch- Variablen verwenden, um stattdessen die einzelnen Schrägstrichzeichen \im Zeichenfolgenwert des ersten Arguments durch zwei umgekehrte Schrägstrichzeichen \\in diesem Zeichenfolgenwert zu ersetzen . Sie können eine setandere Variable verwenden, um den neuen Wert zu erhalten und ihn entsprechend zu verwenden.


Batch-Skript

@ECHO OFF SET a=%~1 SET a=%a:\=\\% SET dp=%~dp1 SET dp=%dp:\=\\%  mp4box -add %a%#trackID=1:name= -add %2#trackID=1:name= -tmp "%dp%" -new "%~n1_new.mp4" ::::mp4box -add %1#trackID=1:name= -add %2#trackID=1:name= -tmp "%dp%" -new "%~n1_new.mp4" 

Hinweis: Es ist wahrscheinlich, dass die mp4boxApp erwartet, dass vollständige Pfade entweder doppelte Backslashes \\oder einzelne Schrägstriche verwenden, /da das Backslash-Zeichen ein Escapezeichen ist, das von der internen Anwendung verwendet wird. Daher wird bei Verwendung eines einzelnen Backslashs der Backslash nicht wörtlich angezeigt.

Sie können möglicherweise verwenden, um zu testen, ob auch Schrägstriche und doppelte umgekehrte Schrägstriche verwendet werden.

SET a=%~1 SET a=%a:\=/% SET dp=%~dp1 SET dp=%dp:\=/% 

Weitere Ressourcen

Vielen Dank für die Erklärung und die Links, sie waren lehrreich. Ich wollte nur wissen, warum am Ende 2 Backslashes erforderlich waren. Wenn ich das richtig verstanden habe, wird der letzte Backslash (\ ") mit einem Escape-Zeichen versehen (\"). Ich muss also einen weiteren Backslash hinzufügen. Was ist mit der zweiten Frage? Wissen Sie, welcher? ist besser ? Derp vor 6 Jahren 0
@Derp Ich würde vorschlagen, immer "% ~ 1" zu verwenden und dann sicherzustellen, dass die Variable bei Bedarf in doppelte Anführungszeichen gesetzt wird, damit Leerzeichen in den Dateinamen oder im Ordnerpfad richtig verarbeitet werden. Wenn Sie den Dateinamen `test 123.txt` verwenden, verwenden Sie` "% ~ 1" `, so dass er als" "test 123.txt" `zurückgegeben wird ... Sie müssen natürlich die verwendeten App-Parameter und deren Funktionsweise verstehen interpretiert wird und somit das `"% ~ 1 # trackID = 1: name = "` Beispiel, das Sie gezeigt haben, wäre meiner Meinung nach am besten. Die Verwendung der Tilde und das Einschließen in Anführungszeichen hat mir nie Probleme bereitet, während das Verwenden von Leerzeichen im Wert keine hat. Pimp Juice IT vor 6 Jahren 0