【发布时间】:2022-01-23 06:17:34
【问题描述】:
我有 75,000 个用于卡拉 OK 系统的文件。每首歌都有音乐 (.mp3) 和歌词 (.cdg)。因此,每首歌曲都有两个文件。
Artist - SongName [Karaoke Brand1].mp3
Artist - SongName [Karaoke Brand1].cdg
问题是有些歌曲有很多版本(5-10)。 Brand1 是最好的,所以我刚刚使用标准 Windows 搜索来过滤该品牌的所有文件,然后手动剪切和粘贴它们,这给了我 25,000 个新策划的旧文件。
但是原文件夹中有很多Brand1没有版本的歌曲。在这种情况下,我更喜欢Brand2 和Brand3,但并不是每首歌都由两者完成。不管每首歌至少是由一个或另一个完成的。
我想遍历所有剩余的 MP3 文件(无需查看 ALL,因为 .cdgs 是同名但扩展名不同):
"D:/Karaoke/All"
并在方括号[通配符?]之前取文件名,看看我是否已经有它的版本:
"D:/Karaoke/Curated"
如果没有任何操作,则移至下一个文件。
如果不存在则将Brand2(如果存在)(完整文件名.mp3 AND .cdg)移动到D:/Karaoke/Curated。
如果Brand2 不存在,请查看 Brand3 是否存在并改用那个
所有品牌的文件命名相同,只是括号内的文字[Brand]会有所不同。
编辑 到目前为止我想出了什么
@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
【问题讨论】:
-
请注意,Stack OverFlow 不是免费的代码编写服务。
-
我知道 Stack OverFlow 是什么和不是什么。我每天在游戏开发不和谐和论坛中帮助人们。我需要一些个人项目的帮助,并且认为一次性脚本在 Windows 中执行它会很简单。无论如何,谢谢。我会自己解决的。这里不是一群友好的人,呵呵。新年快乐
标签: loops batch-file move