【问题标题】:Copy and rename music files with batch file使用批处理文件复制和重命名音乐文件
【发布时间】:2021-08-14 07:18:23
【问题描述】:

我有一个格式为 D:%Artist%%Album%\Song.mp3 的音乐目录。从这里,我创建了一个脚本,提示输入艺术家文件夹,然后在剥离任何专辑文件夹后将所有 MP3 复制到具有相同名称的新文件夹中

D:\%Artist%\%Album%\Song.mp3 into D:\MP3s\%Artist%\Song.mp3

我真正想做的是重命名新位置中的所有歌曲文件,以包含专辑名称,后跟下划线。如果有歌曲在 Artist 根文件夹中,它应该在歌曲名称前加一个下划线,以表明它不在专辑文件夹中。

D:\%Artist%\%Album%\%Song% into D:\MP3s\%Artist%\%Album%_Song.mp3 OR D:\MP3s\%Artist%\_Song.mp3

以下代码是我用来将所有子文件夹中的所有歌曲放到一个文件夹中的代码,但我不确定如何为重命名过程设置 albun 名称。这是我当前的代码

SET /P Artist=What is the artist folder to copy?
pushd D:\Music\%Artist%
for /r %%a in (*.mp3) do (
COPY "%%a" "D:\Music\MP3s\%%~nxa"
)
popd

【问题讨论】:

  • %SONG$ 是目录名还是 .mp3 文件名?我应该将其读作D:\%Artist%\%Album%\%Song%,其中%SONG% 可能是Shine.mp3
  • %Song% 应该被读取为文件名
  • 使用合适的重命名工具github.com/75lb/renamer
  • @Lloyd 所以“适当的重命名工具”是指您编写的工具,而不是使用预装的操作系统提供的工具?
  • 不,我不@KurtSchwob,我的意思是一个适当的重命名工具,而不是这里建议的未经测试的DOS脚本。如果你犯了错误,重命名文件是有风险的并且可能具有破坏性..

标签: cmd copy rename batch-rename


【解决方案1】:

我发现以下代码适用于我的情况。如果您有不同的文件结构深度,那么您将需要调整令牌。我还发现,如果脚本为同一个艺术家运行多次,它会复制文件但不会重命名它们,所以我添加了一个文件检查以查看最终文件名是否已经存在。

SETLOCAL enabledelayedexpansion
SET /P Artist=What is the artist folder to copy?
MD "D:\Music\MP3s\%Artist%"
PUSHD D:\Music\%Artist%
FOR /r %%a in (*.mp3) DO (
FOR /f "tokens=4,5 delims=\" %%I IN ("%%a") DO (
SET Song=%%J
SET Album=%%I
if "!Song!" == "" (
SET Song=!Album!
SET Album=
)
SET NewFileName="!Album!_!Song!"
)
CD D:\Music\MP3s\%Artist%
IF NOT EXIST !NewFileName! (
COPY "%%a" "D:\Music\MP3s\%Artist%\%%~nxa"
REN "D:\Music\MP3s\%Artist%\%%~nxa" !NewFileName!
)
)
POPD

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 2014-11-12
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    相关资源
    最近更新 更多