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