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

如何用批处理筛选指定目录无下划线的jpg/png文件并按规则重命名

优化后批处理脚本

@echo off
setlocal enabledelayedexpansion
:: 此处替换为实际的CLI根目录路径
set "CLI_ROOT=\\servername\SECH\DATA\CLI\"

:: 遍历CLI根目录下所有jpg、png文件,仅需处理jpg可删除*.png参数
For /R "%CLI_ROOT%" %%a in (*.jpg *.png) DO (
    echo 扫描到文件: %%~nxa
    :: 获取文件所在父文件夹名称
    For %%g in ("%%~dpa.") do set "LAST_FOLDER=%%~nxg"
    :: 仅处理IN文件夹内的文件
    If "!LAST_FOLDER!" == "IN" (
        :: 获取IN上层的代理编号文件夹名
        For %%V in ("%%~dpa..") do set "FOLDER_NAME=%%~nxV"
        set "CURRENT_FILE_NAME=%%~nxa"
        set "PREFIX=!FOLDER_NAME!_"

        :: 核心过滤:仅处理文件名不含下划线的文件
        If "!CURRENT_FILE_NAME:_=!" == "!CURRENT_FILE_NAME!" (
            echo 待处理文件: !CURRENT_FILE_NAME!,代理前缀: !PREFIX!
            Rename "%%~a" "!PREFIX!%%~nxa"
            echo 重命名完成: !PREFIX!%%~nxa
        )
    )
)
endlocal
pause

核心优化点

  • 新增无下划线文件名过滤逻辑:通过变量替换把文件名中的下划线替换为空,若替换结果与原文件名完全一致,说明原文件不含下划线,仅对这类文件执行后续操作,完全匹配需求。
  • 简化冗余判断逻辑:因为我们仅处理无下划线的文件,天然不可能已经添加过「编号_」格式的前缀,无需额外判断是否重复重命名,也解决了原脚本硬编码取前4位对比前缀、适配不了不同长度代理编号的问题。
  • 保留for /R指定遍历路径的逻辑,只需修改CLI_ROOT变量即可快速调整扫描目录,不需要修改循环逻辑。

注意事项

运行脚本前建议先把Rename "%%~a" "!PREFIX!%%~nxa"行替换为echo 测试重命名: "%%~a" "!PREFIX!%%~nxa",确认输出的重命名规则符合预期后再执行实际重命名操作,避免误改文件。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:06:03