You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何创建批处理文件:将子文件夹文件上移一级并重命名重复文件

批处理解决方案:将子文件夹文件上移一级并自动重命名重复文件

这里有一个专门针对你需求的批处理脚本,它会把SHOW_NAME目录下各SEASON子目录里的子文件夹文件上移到SEASON目录,遇到重复文件时自动添加递增的数字后缀(比如title_episode3(1).mkvtitle_episode3(2).mkv),彻底避免覆盖问题:

@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下的所有子目录(如SEASON1、SEASON2等)
for /d %%s in (*) do (
    :: 遍历每个SEASON目录下的子文件夹(如TITLE_EP1、TITLE_EP2等)
    for /d %%e in ("%%s\*") do (
        :: 遍历子文件夹中的所有文件
        for %%f in ("%%e\*") do (
            :: 定义初始目标路径(SEASON目录下的原文件名)
            set "target=%%s\%%~nxf"
            set "counter=1"
            
            :: 如果目标文件已存在,生成带递增后缀的新文件名
            if exist "!target!" (
                :rename_loop
                set "newtarget=%%s\%%~nf(!counter!)%%~xf"
                if exist "!newtarget!" (
                    set /a counter+=1
                    goto rename_loop
                )
                set "target=!newtarget!"
            )
            
            :: 执行文件移动操作
            move "%%f" "!target!"
            echo 已完成移动: "%%f" → "!target!"
        )
        
        :: 可选:移动完成后删除空的子文件夹(不需要可注释此行)
        rd "%%e"
    )
)

echo 所有文件处理完成!
pause
endlocal

脚本说明:

  • @echo off:关闭命令回显,让输出更简洁易读。
  • setlocal enabledelayedexpansion:启用延迟变量扩展,确保循环中修改的变量能实时生效。
  • 三层循环结构
    1. 第一层遍历SHOW_NAME下的所有SEASON类子目录;
    2. 第二层遍历每个SEASON目录下的子文件夹(即存放单集文件的文件夹);
    3. 第三层遍历每个子文件夹中的所有文件。
  • 重复文件处理逻辑:如果目标位置已存在同名文件,会自动尝试添加(1)(2)等后缀,直到找到一个未被占用的文件名。
  • 可选的空目录删除:脚本最后会删除移动完成后的空文件夹,如果你想保留这些空文件夹,只需把rd "%%e"这一行注释掉(在行首加::)。

使用注意事项:

  1. 把这个批处理文件直接放在你的SHOW_NAME目录下运行,不要放到SEASON子目录里;
  2. 建议先备份部分文件进行测试,确保符合你的预期后再批量处理;
  3. 脚本会处理所有SEASON目录下的子文件夹文件,不管子文件夹的具体名称是什么;
  4. 不同扩展名的同名文件会被视为不同文件,不会触发重命名(比如title.mkvtitle.txt会保留各自的名字)。

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

火山引擎 最新活动