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

批量脚本扩展需求:按规则移动并重命名DDS文件

批处理脚本实现文件批量移动并重命名

核心思路

用嵌套逻辑实现:按顺序遍历源文件,计算每个文件对应的目标文件夹,同时生成指定起始编号的带前导零文件名,完成移动+重命名操作。

完整脚本示例

@echo off
setlocal enabledelayedexpansion

:: 配置参数
set "start_folder=002360"  :: 第一个目标文件夹的起始名称
set "start_file=003760"    :: 第一个文件的目标起始编号(不带后缀)
set "files_per_folder=4"   :: 每个文件夹要放入的文件数(对应你说的%y%)
set "source_file_prefix=file-" :: 源文件的前缀(匹配你生成的file-*.dds)

:: 把带前导零的起始编号转成纯数值,方便后续递增
set /a folder_num=1%start_folder% - 1000000
set /a file_num=1%start_file% - 1000000

:: 按顺序处理每个源文件
set "current_file_idx=0"
for /f "delims=" %%f in ('dir /b /a-d "%source_file_prefix%*.dds"') do (
    :: 计算当前文件对应的目标文件夹索引
    set /a folder_idx=current_file_idx / files_per_folder
    set /a target_folder_num=folder_num + folder_idx
    :: 格式化为6位带前导零的文件夹名
    set "target_folder=000000!target_folder_num!"
    set "target_folder=!target_folder:~-6!"

    :: 生成6位带前导零的目标文件名
    set /a target_file_num=file_num + current_file_idx
    set "target_file=000000!target_file_num!"
    set "target_file=!target_file:~-6!.dds"

    :: 执行移动并重命名
    move "%%f" "!target_folder!\!target_file!" >nul
    echo 已处理:%%f → !target_folder!\!target_file!

    set /a current_file_idx+=1
)

endlocal
pause

关键细节说明

  • 延迟变量扩展:必须开启enabledelayedexpansion,否则循环内变量无法实时更新取值。
  • 前导零格式化:通过补全6位零字符串再截取最后6位,确保编号始终是固定长度的带前导零格式。
  • 文件分配逻辑:用current_file_idx / files_per_folder计算文件夹索引,自动把files_per_folder个文件分配到同一个文件夹。
  • 数值转换:把002360这类带前导零的字符串转成纯数值2360,避免递增时出现非预期的前导零问题。

自定义调整

  • 修改start_folder、start_file可指定不同的起始编号。
  • 调整files_per_folder对应你的变量%y%,控制每个文件夹的文件数量。
  • 若源文件命名规则不同,修改source_file_prefix匹配你的源文件前缀即可。

内容的提问来源于stack exchange,提问作者misha.physics

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:10:02