Параметр "-tmp" в MP4Box требует 2 обратных слеша
Я нахожусь на Windows 7 Ultimate SP1 x64, работает MP4Box - GPAC версии 0.7.2-DEV-rev357-g7115eeb8-master.
Я создал BAT-файл следующим образом:
mp4box -add %1#trackID=1:name= -add %2#trackID=1:name= -tmp "%~dp1\" -new "%~n1_new.mp4"
который отлично работает, но перед добавлением \ в %~dp1\ это дало ошибку:
Error - 2 input names specified, please check usage
Зачем ему нужно 2 обратных слеша для работы?
Если это важно, я просто перетаскиваю видео и аудио в BAT-файл.
Кстати, есть %1#trackID=1:name= ОК или я должен изменить это на это "%~1#trackID=1:name="?
1 ответ
Чтобы это исправить, вы можете использовать подстроки пакетных переменных, чтобы заменить одиночные символы обратной косой черты. \в строковом значении первого аргумента с двумя символами обратной косой черты\\в этом строковом значении вместо. Вы можетеset другая переменная, чтобы иметь новое значение и использовать его соответственно.
Пакетный скрипт
@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"
Примечание: проблема, вероятно,
mp4boxприложение ожидает полные пути для использования двойной обратной косой черты\\или одиночные косые черты/из-за того, что символ обратной косой черты является escape-символом, он использует иное внутренне и, таким образом, используя одну обратную косую черту, он не видит обратную косую черту буквально.
Вы можете использовать его для проверки, использует ли он как прямые, так и двойные обратные слэши.
SET a=%~1
SET a=%a:\=/%
SET dp=%~dp1
SET dp=%dp:\=/%