У меня 75 000 файлов для караоке-системы. Для каждой песни есть музыка (.mp3
) и текст (.cdg
). Итак, для каждой песни есть два файла.
Artist - SongName [Karaoke Brand1].mp3
Artist - SongName [Karaoke Brand1].cdg
Проблема в том, что некоторые песни имеют много версий (5-10). Brand1
- лучший вариант, поэтому я просто использовал стандартный поиск Windows, чтобы отфильтровать все файлы этой марки, вырезать их и вставить вручную, что дало мне 25 000 файлов в новой версии.
Но в исходной папке есть много песен, для которых Brand1
не имеет версии. Я предпочитаю Brand2
и Brand3
в этом случае, но не каждая песня сделана обоими. Независимо от того, что каждая песня, по крайней мере, исполняется одним или другим.
Я хочу просмотреть все оставшиеся MP3-файлы (нет необходимости смотреть на ALL, поскольку .cdg
имеют одно и то же имя с другим расширением):
"D:/Karaoke/All"
и взять имя файла ДО квадратных скобок [подстановочный знак?] И посмотреть, есть ли у меня его версия в:
"D:/Karaoke/Curated"
Если ничего не делать и перейти к следующему файлу.
Если нет, переместите Brand2
, если оно существует (полное имя файла .mp3
И .cdg
) в D:/Karaoke/Curated
.
Если Brand2
не существует, посмотрите, есть ли Brand3, и используйте его вместо
Имена файлов одинаковы для всех брендов, только текст в скобках [Brand]
будет другим.
EDIT
что я придумала до сих пор
@echo off
setlocal enabledelayedexpansion
for %%i in (*.mp3) do (
for /f "tokens=1 delims=[" %%a in ("%%i") DO (
REM get "checkable name first"
REM echo %%a
set checkName=%%a
REM echo !checkName!
)
echo !checkName!
)
exit