You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows批处理脚本优化:DVD/BD备份文件批量重命名需求

整理DVD/BD备份文件的右键批处理脚本优化

问题背景

我是业余编程新手,正在整理DVD/BD备份文件的目录结构与文件名,适配流媒体播放器。为减少重复操作,希望制作一个可在Windows 10右键菜单启动的脚本,直接在目标目录运行。

原目录结构

C:\User\Me\Videos\Star Trek
-- Star Trek (DVD) Disc 1
   -- ABCST-disc-1.iso
   -- randomname1.jpg
   -- folder.txt
-- Star Trek (DVD) Disc 2
   -- ABCST-disc-2.iso
   -- randomname2.png
   -- folder.txt
-- Star Trek (BD) Disc 1
   -- ABCST-bd-disc-1 (folder structure)
      -- BDMV (and subfolders)
      -- CERTIFICATE (and subfolders)
   -- randomname3.png
   -- folder.txt

目标目录结构

C:\User\Me\Videos\Star Trek
-- Star Trek (DVD) Disc 1
   -- Star Trek (DVD) Disc 1.iso
   -- Star Trek (DVD) Disc 1.jpg
   -- folder.txt
-- Star Trek (DVD) Disc 2
   -- Star Trek (DVD) Disc 2.iso
   -- Star Trek (DVD) Disc 2.png
   -- folder.txt
-- Star Trek (BD) Disc 1
   -- Star Trek (BD) Disc 1 (folder structure)
      -- BDMV (and subfolders)
      -- CERTIFICATE (and subfolders)
   -- Star Trek (BD) Disc 1.png
   -- folder.txt

现有代码问题

我编写的批处理存在路径硬编码问题,必须在每个子目录放置脚本,使用不便:

@echo off
except (folder.txt)
for /d %%a in ("C:\User\Me\Videos\Star Trek\Star Trek (DVD) Disc 1") do ren "%%~fa\*.png" "%%~na.*"
for /d %%a in ("C:\User\Me\Videos\Star Trek\Star Trek (DVD) Disc 1") do ren "%%~fa\*.jpg" "%%~na.*"
for /d %%a in ("C:\User\Me\Videos\Star Trek\Star Trek (DVD) Disc 1") do ren "%%~fa\*.iso" "%%~na.*"
for /d %%a in ("C:\User\Me\Videos\Star Trek\Star Trek (DVD) Disc 1") do ren "%%~fa\*.mkv" "%%~na.*"

优化需求

  • 修改脚本,自动识别启动目录,替换硬编码路径
  • 合并.iso、.mkv、.png、.jpg等指定文件类型的处理代码,减少冗余
  • 确保folder.txt不受重命名操作影响
  • (可选)将BD备份中包含BDMV文件夹的父文件夹重命名为其父目录名称

解决方案

优化后的批处理脚本

@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下的所有子目录
for /d %%d in (*) do (
    set "dirName=%%~nd"
    echo 正在处理目录: !dirName!

    :: 批量重命名指定类型文件,排除folder.txt
    for %%t in (iso mkv png jpg) do (
        for %%f in ("%%d\*.%%t") do (
            if not "%%~nxf"=="folder.txt" (
                ren "%%f" "!dirName!.%%t"
            )
        )
    )

    :: (可选)处理BD备份文件夹:识别包含BDMV的子文件夹并重命名
    for /d %%sub in ("%%d\*") do (
        if exist "%%sub\BDMV" (
            ren "%%sub" "!dirName!"
            echo 已重命名BD文件夹: "%%~nsub" → "!dirName!"
        )
    )
)

echo 所有目录处理完成!
pause

添加右键菜单步骤

  1. 按下Win+R输入regedit打开注册表编辑器
  2. 导航到路径:HKEY_CLASSES_ROOT\Directory\shell
  3. 右键点击shell,选择「新建→项」,命名为整理DVD/BD备份
  4. 右键点击新建的项,选择「新建→字符串值」,命名为Icon,值可设为shell32.dll,12(默认文件夹图标)或自定义图标路径
  5. 右键点击整理DVD/BD备份,选择「新建→项」,命名为command
  6. 双击command的默认值,填入批处理脚本的完整路径,格式为:"C:\你的脚本路径\RenameBDDVD.bat" "%1"
  7. 关闭注册表编辑器后,右键点击目标文件夹即可看到该选项

内容的提问来源于stack exchange,提问作者user23418495

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:23:14