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

使用CMD批量移除含指定子串的文件名中的目标子串

批量移除文件名中的备份时间戳解决方案

修正后的单命令行脚本

这个脚本会仅处理带有目标时间戳的文件,自动跳过文件夹,避免误改其他文件:

cmd /v:on /c "for /R %f in (*(2022_12_15 14_28_40 UTC).*) do @if exist "%f\" (@echo Skipping folder: "%f") else (@set "nn=%~nf" & if "!nn:~-26!"==" (2022_12_15 14_28_40 UTC)" @ren "%~ff" "!nn:~0,-26!%~xf")"

关键修复点:

  • 新增if exist "%f\"判断,识别并跳过文件夹,避免生成无效的文件夹重命名命令
  • 增加文件名末尾匹配校验,只有当文件名最后26位是目标时间戳时才执行重命名,防止误改无时间戳的短文件名
  • 保留延迟扩展和正确的符号转义,确保文件名中的空格、括号被正确解析

修复后的批处理脚本

这个脚本解决了原脚本的变量赋值与IF判断失效问题,同时提升了可读性:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "Timestamp= (2022_12_15 14_28_40 UTC)"
set "TimestampLen=26"

for /F "delims=" %%I in ('dir "%~dp0*%Timestamp%.*" /A-D /B /S 2^>nul') do (
    set "FullFileName=%%I"
    set "FileNameOnly=%%~nI"
    set "FileExtension=%%~xI"
    setlocal EnableDelayedExpansion
    if "!FileNameOnly:~-%TimestampLen%!" == "!Timestamp!" (
        ren "!FullFileName!" "!FileNameOnly:~0,-%TimestampLen%!!FileExtension!"
        echo Renamed: "!FullFileName!" → "!FileNameOnly:~0,-%TimestampLen%!!FileExtension!"
    )
    endlocal
)
endlocal

关键修复点:

  • 将时间戳和长度定义为变量,避免手动计算和输入错误,后续修改时间戳只需更新变量值
  • 修正dir命令的通配符写法,通过变量拼接精准匹配带目标时间戳的文件
  • 确保启用延迟扩展后,所有变量使用!变量!格式访问,解决原脚本中变量赋值后无法正确获取的问题
  • 增加重命名操作的输出提示,方便验证处理结果
  • 移除可能导致语法错误的冗余代码,确保脚本执行稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:23:17