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

如何修改批处理文件实现各文件夹内文件独立从1开始重命名

子文件夹内MP4文件独立从1开始重命名方案

问题现状

现有批处理代码会全局累加计数,导致子文件夹的文件编号延续上一文件夹的计数,无法实现每个子文件夹内文件从1开始编号的需求:

@Set "count=0"
@For /F "Delims=" %%I In ('Dir /B/S/A-D-S "*.mp4" 2^>NUL')Do @(
    For %%J In ("%%~pI.")Do @(Set /A count+=1
        SetLocal EnableDelayedExpansion
        Ren "%%I" "!count!%%~xI"
        EndLocal))
@Pause

当前执行结果:

  • Folder1(含60个文件):1.mp4、2.mp4……60.mp4
  • Folder2(含60个文件):61.mp4、62.mp4……120.mp4
  • Folder3(含30个文件):121.mp4、122.mp4……160.mp4

期望效果:每个子文件夹内的文件从1开始计数,到该文件夹内文件总数结束,如Folder2的文件应为1.mp460.mp4,Folder3为1.mp430.mp4。

修改后的批处理代码

@echo off
:: 递归遍历所有子文件夹
for /d /r %%d in (*) do (
    pushd "%%d"
    set "count=0"
    :: 遍历当前文件夹下的MP4文件
    for /f "delims=" %%f in ('dir /b /a-d "*.mp4" 2^>nul') do (
        set /a count+=1
        setlocal enabledelayedexpansion
        ren "%%f" "!count!.mp4"
        endlocal
    )
    popd
)
@pause

关键修改点说明

  1. 按文件夹独立处理:用for /d /r %%d in (*)递归遍历每个子文件夹,确保每个文件夹单独执行重命名逻辑。
  2. 计数重置:进入每个文件夹后立即将count设为0,保证每个文件夹的计数从1开始累加。
  3. 路径隔离:通过pushd和popd切换到当前子文件夹处理文件,避免跨文件夹的路径干扰,重命名逻辑更清晰。

原代码的核心问题是count为全局变量,所有文件夹共享同一计数,导致编号连续累加。修改后每个文件夹独立初始化计数,完美匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:01:07