Параметр "-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:\=/%