Это должно быть довольно легко для некоторых из вас, но я довольно начинающий со скриптами, так что это довольно сложно для меня, смеется.
Я пытаюсь создать пакетный скрипт для Windowsчто:
- рекурсивно сканирует заданную папку для видеофайлов (mkv, mp4, avi и т.Вставляет эту информацию в нужных местах в уже существующие файлы "! .Tags", которые находятся в тех же папках, что и видео
До сих пор мне удалось создать пакетный скрипт, который:
- Рекурсивно сканирует заданную папку для видеофайлов (mkv, mp4, avi)
- Извлекает их ширину и высоту (используя ffprobe)
- Записывает эту информацию в группу "index.txt "файлы, расположенные в той же папке, что и видеофайлы
Вот текущий скрипт:
CALL :treeProcess
GOTO :eof
:treeProcess
FOR %%F IN (*.mkv, *.mp4, *.avi, *.wmv, *.mpg, *.ts) DO (
ECHO "@" : "%%F", >> index.txt
"C:\Program Files\FFmpeg\bin\ffprobe.exe" "%%F" -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width -print_format xml >> index.txt
"C:\Program Files\FFmpeg\bin\ffprobe.exe" "%%F" -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height -print_format xml >> index.txt
)
FOR /D %%d IN (*) DO (
CD %%d
CALL :treeProcess
CD ..
)
EXIT /b
Затем я просто использую Replace Text от Ecobyte, чтобы избавиться от ненужногоматериал, сгенерированный сценарием, и в итоге получается «index.txt»"files.
Вот один из чистых файлов" index.txt ".В этой папке столько же 3-строчных записей, сколько видеофайлов (в этом примере в этой папке 4 видеофайла):
"@" : "Creating Nerve.mkv",
"WIDTH" : "1920",
"HEIGHT" : "1080",
"@" : "Player Profiles.mkv",
"WIDTH" : "1920",
"HEIGHT" : "1080",
"@" : "The Fat Jewish Gets Tattewish - Outtakes.mkv",
"WIDTH" : "1920",
"HEIGHT" : "1080",
"@" : "The Governor's Ball Takeover.mkv",
"WIDTH" : "1920",
"HEIGHT" : "1080",
Понятно.
Что теперьМне нужен был бы другой скрипт для:
- Разбор каждого файла "index.txt" для всех строк, начинающихся с "" @ "(строки 1, 4, 7, 10, 13, 16и т. д.)
- В той же папке проанализируйте файл "! .tags" для получения точно такого же текста
- Добавьте две следующие строки файла "index.txt" сразу посленайденный текст в файле "! .tags" (ну, конечно, с начальным CRLF)
Пример:
- Анализ "index.txt" для строки 1: "@": "Создание нерва.mkv",
- Разобрать соответствующий файл "! .Tags" для: "@": "Создание нерва.mkv",
- Добавить эти две строкифайла «index.txt» после найденного текста в файле «! .tags»: «ШИРИНА»: «1920», «ВЫСОТА»: «1080»,
- Продолжить анализ
Вот как выглядит файл "! .Tags" в начале:
[
{
"@" : "Creating Nerve.mkv",
"CREATION_TIME" : "2016-10-16T15:51:50.000000Z",
"DATE" : "2016",
"DURATION" : "1606.3550000",
"ENCODER" : "libebml v1.3.3 + libmatroska v1.4.4",
"GENRE" : "Featurettes",
"TITLE" : "Creating Nerve",
},
{
"@" : "Player Profiles.mkv",
"CREATION_TIME" : "2016-10-16T16:03:56.000000Z",
"DURATION" : "347.6030000",
"TITLE" : "Player Profiles"
},
{
"@" : "The Fat Jewish Gets Tattewish - Outtakes.mkv",
"CREATION_TIME" : "2016-10-16T16:11:23.000000Z",
"DURATION" : "168.1040000",
"TITLE" : "The Fat Jewish Gets Tattewish - Outtakes"
},
{
"@" : "The Governor's Ball Takeover.mkv",
"CREATION_TIME" : "2016-10-16T16:24:23.000000Z",
"DURATION" : "165.4590000",
"TITLE" : "The Governor's Ball Takeover"
}
]
И вот как это должно выглядеть в итоге:
[
{
"@" : "Creating Nerve.mkv",
"WIDTH" : "1920",
"HEIGHT" : "1080",
"CREATION_TIME" : "2016-10-16T15:51:50.000000Z",
"DATE" : "2016",
"DURATION" : "1606.3550000",
"ENCODER" : "libebml v1.3.3 + libmatroska v1.4.4",
"GENRE" : "Featurettes",
"TITLE" : "Creating Nerve",
},
{
"@" : "Player Profiles.mkv",
"WIDTH" : "1920",
"HEIGHT" : "1080",
"CREATION_TIME" : "2016-10-16T16:03:56.000000Z",
"DURATION" : "347.6030000",
"TITLE" : "Player Profiles"
},
{
"@" : "The Fat Jewish Gets Tattewish - Outtakes.mkv",
"WIDTH" : "1920",
"HEIGHT" : "1080",
"CREATION_TIME" : "2016-10-16T16:11:23.000000Z",
"DURATION" : "168.1040000",
"TITLE" : "The Fat Jewish Gets Tattewish - Outtakes"
},
{
"@" : "The Governor's Ball Takeover.mkv",
"WIDTH" : "1920",
"HEIGHT" : "1080",
"CREATION_TIME" : "2016-10-16T16:24:23.000000Z",
"DURATION" : "165.4590000",
"TITLE" : "The Governor's Ball Takeover"
}
]
Может кто-нибудь помочь мне с этим?Спасибо!