Как установить ту же папку назначения с переменными For l oop? - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь преобразовать все мои видео в формате .avi в формат .mkv, и для этого я нашел хороший скрипт, который снова оказался полезным в моем случае. Моя структура выглядит примерно так:

  • Mainfolder

    • folder1
    • folder2
    • folder3

Итак, я копирую командный файл с этим кодом в основную папку, и он конвертирует все файлы в подпапках. И это код:

for /R %%Z in ("*.avi") do mkvmerge.exe -o "%%~nZ.mkv" "%%~Z"

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

Итак, мои вопросы к вам:

  1. Как мне написать код для получить вывод в тех же папках, что и ввод?
  2. Что означает ~n и почему именно здесь в коде?

1 Ответ

0 голосов
/ 06 мая 2020

Итак, что произойдет, если вы попробуете:

@echo off 

cd /d "%~dp0" & setlocal
for /r /d %%i in (*)do if exist "%%~fi\*.avi" for /f tokens^=* %%I in (
'%__APPDIR__%where.exe "%%~i:*.avi"')do echo\mkvmerge.exe -o "%%~dpnI.mkv" "%%~dpnxI"

endlocal & %__APPDIR__%timeout.exe -1 & goto :EOF

Если результат вам кажется, удалите echo\:

'%__APPDIR__%where.exe "%%~i:*.avi"')do <strike>echo\</strike>mkvmerge.exe -o "%%~dpnI.mkv" "%%~dpnxI"
...