2

Я не могу перечислить конкретные файлы каталога, переданного в качестве аргумента пакетного файла.

Проблема, с которой я сталкиваюсь, заключается в том, что труба "|" символ не распознается, я использовал его, чтобы обойти ограничения команды dir которые он может

dir /b *.avi *.mp4 *.mkv

внутри каталога, но поскольку я создаю этот пакетный файл для выполнения после uTorrent, мне нужно передать каталог в качестве аргумента.

Во всем мире я пытаюсь автоматически конвертировать файлы, загруженные uTorrent, в аудио AAC.

Вот содержимое пакетных файлов:

FOR /F "tokens=*" %%i IN ('dir %1 /b /A-D | findstr /I (avi mp4 mkv)') DO ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni_aac%%~xi" 
PAUSE

1 ответ1

1

Труба | персонаж не распознается

Вам нужно будет избежать этого следующим образом:

^|

В вашем коде есть несколько дополнительных ошибок:

  • Трубопровод к findstr /I (avi mp4 mkv) не работает, так как findstr не работает таким образом. В любом случае вам не нужен findstr или трубопровод.

  • Если бы это сработало, вам также пришлось бы сбежать ( и ) .

  • "%%~di%%~pi%%~ni_aac%%~xi" не дает выходному файлу расширение .acc

Попробуйте следующее:

pushd %1
FOR /F "usebackq tokens=*" %%i IN (`dir /b *.avi *.mp4 *.mkv`) DO (
  echo ffmpeg -i "%%~fi" -c:v copy -c:a aac -ac 2 "%%~di%%~pi%%~ni.aac" 
  )
PAUSE
popd

Удалите echo если вас устраивает измененная команда ffmpeg .

^ Побег персонажа.

Добавление escape-символа перед символом команды позволяет рассматривать его как обычный текст.

При передаче или перенаправлении любого из этих символов вы должны использовать префикс с escape-символом: & \ < > ^ |

например, ^\ ^& ^| ^> ^< ^^

Цитаты, экранирующие символы, разделители - Windows CMD - SS64.com


Дальнейшее чтение

ПАУЗА

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