Я нахожусь на 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= OK или я должен изменить его на "%~1#trackID=1:name=" ?

1 ответ1

0

Чтобы это исправить, вы можете использовать подстроки пакетных переменных, чтобы заменить одиночные символы обратной косой черты \ в строковом значении первого аргумента вместо двух символов обратной косой черты \\ в этом строковом значении. Вы можете 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:\=/%

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .