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

Дополнительные ресурсы

Другие вопросы по тегам