如何批量将文件按序列重命名并保留供应商前缀?
批量重命名CSV文件:保留供应商前缀并按序列编号
以下提供两种符合需求的批处理方案,可根据实际需要选择:
方案1:每个供应商独立编号
同一供应商前缀的文件从1开始独立递增编号(如vendorA050123.csv→vendorA1.csv,vendorA060123.csv→vendorA2.csv;vendorB050123.csv→vendorB1.csv):
@echo off setlocal ENABLEDELAYEDEXPANSION :: 遍历当前目录下所有CSV文件 for %%f in (*.csv) do ( :: 提取文件名中数字前的供应商前缀(如从vendorA050123中提取vendorA) for /f "delims=0123456789" %%p in ("%%~nf") do set "prefix=%%p" :: 初始化当前前缀的计数器(首次处理时设为1) if not defined count_!prefix! set "count_!prefix!=1" :: 执行重命名:前缀 + 计数器 + .csv ren "%%f" "!prefix!!count_!prefix!.csv" :: 计数器自增,为下一个同前缀文件准备 set /a count_!prefix! += 1 ) echo 重命名完成! endlocal
方案2:全局统一编号
所有CSV文件按遍历顺序连续编号,保留各自供应商前缀(如第一个文件vendorA050123.csv→vendorA1.csv,第二个vendorB050123.csv→vendorB2.csv,第三个vendorA060123.csv→vendorA3.csv):
@echo off setlocal ENABLEDELAYEDEXPANSION set "fileNum=1" :: 遍历当前目录下所有CSV文件 for %%f in (*.csv) do ( :: 提取文件名中数字前的供应商前缀 for /f "delims=0123456789" %%p in ("%%~nf") do set "prefix=%%p" :: 执行重命名:前缀 + 全局编号 + .csv ren "%%f" "!prefix!!fileNum!.csv" :: 全局计数器自增 set /a fileNum += 1 ) echo 重命名完成! endlocal
原代码问题说明
- 第一段代码:硬编码了
VendorA前缀,且所有同供应商文件都被重命名为同一个VendorA1.csv,会导致文件覆盖,无法实现序列编号。 - 第二段代码:仅实现了全局序列编号,但未提取并保留供应商前缀,不符合需求。
内容的提问来源于stack exchange,提问作者Sandeep
相关产品推荐
相关产品推荐

