Parametr „-tmp” MP4Box wymaga 2 odwrotnych ukośników

0

Korzystam z systemu Windows 7 Ultimate SP1 x64, na MP4Box - GPAC w wersji 0.7.2-DEV-rev357-g7115eeb8-master.

Utworzyłem plik BAT taki jak ten:

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

co działa dobrze, ale przed dodaniem \do %~dp1\niego wystąpił błąd:

Error - 2 input names specified, please check usage

Dlaczego do działania potrzebne są 2 ukośniki odwrotne?

Jeśli to ważne, po prostu przeciągam i upuszczam wideo i audio w pliku BAT.

BTW, jest %1#trackID=1:name=OK, czy powinienem to zmienić "%~1#trackID=1:name="?

Derp
źródło

Odpowiedzi:

0

Aby to naprawić, można użyć podciągów zmiennych wsadowych do zastąpienia pojedynczych znaków odwrotnego ukośnika \w wartości ciągu pierwszego argumentu dwoma znakami odwrotnego ukośnika \\w tej wartości ciągu. Możesz użyć setinnej zmiennej, aby mieć nową wartość i odpowiednio ją użyć.


Skrypt partii

@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"

Uwaga: problem prawdopodobnie polega na tym, mp4boxże aplikacja oczekuje, że pełne ścieżki będą używać podwójnych ukośników odwrotnych \\lub pojedynczych ukośników, /ponieważ znak odwrotnego ukośnika jest znakiem ucieczki, którego używa wewnętrznie, a zatem używając pojedynczego odwrotnego ukośnika nie widzi dosłownie odwrotnego ukośnika.

Możesz użyć do przetestowania, czy używa również ukośników do przodu, a także podwójnych ukośników odwrotnych.

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

Dalsze zasoby

Pimp Juice IT
źródło
Dziękuję bardzo za wyjaśnienia i linki, które miały charakter edukacyjny. Chciałem tylko wiedzieć, dlaczego potrzebowałem 2 odwrotnych ukośników na końcu, więc teraz, jeśli dobrze to rozumiem, ostatni ukośnik jest unikany (\ "), więc muszę dodać kolejny odwrotny ukośnik. A co z drugim pytaniem? Czy wiesz, który z nich? jest lepsze?
Derp
@Derp Sugeruję zawsze używać, %~1a następnie dopilnować, aby w razie potrzeby dołączyć zmienną do podwójnych cudzysłowów, aby poprawnie obsługiwała spacje w nazwach plików lub ścieżkach folderów. Więc jeśli nazwa pliku test 123.txtbędzie używana, "%~1"więc zostanie zwrócona, ponieważ "test 123.txt"... oczywiście musisz zrozumieć parametry aplikacji, których używasz, i jak to jest interpretowane, a zatem "%~1#trackID=1:name="pokazany przykład byłby moim zdaniem najlepszy. Używanie tyldy i zamykanie podwójnych cudzysłowów nigdy nie sprawiało mi problemów, podczas gdy nie używanie i brak spacji w wartości.
Pimp Juice IT