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

Batch的ren命令如何保留文件扩展名且兼容含点号的文件名

兼容含点文件名的批量重命名解决方案

原生CMD的ren命令通配符的设计逻辑限制了该场景的使用:它的目标文件名通配符*会保留源文件名中匹配到的所有内容(包括中间的点),因此无法直接通过原生ren的通配符写法实现「仅保留最后一段扩展名,前缀完全替换为指定名称」的需求。

你可以通过以下两种可行方案实现需求,两种方案都支持自动生成批量命令,无需手动处理单个文件的扩展名:

方案1:改用PowerShell命令实现(更稳定,推荐)

PowerShell内置的文件属性可以精准提取文件扩展名,不受文件名中间点的影响,单条命令即可完成重命名:

# 预览重命名效果,确认无误后删除-WhatIf参数即可执行
Get-ChildItem -Path "path\does.not.work.*" | Rename-Item -NewName { "test" + $_.Extension } -WhatIf

自动生成命令时,只需要替换匹配路径"path\does.not.work.*"和新文件名前缀"test"两个参数即可。

方案2:封装通用CMD批处理脚本(适配原有CMD生态)

如果需要保留CMD执行逻辑,可以提前编写一个通用批处理脚本rename_keep_ext.bat,内容如下:

@echo off
setlocal enabledelayedexpansion
:: 入参1:文件匹配规则 入参2:新文件名前缀
set "match_rule=%~1"
set "new_prefix=%~2"

for %%f in ("%match_rule%") do (
    set "file_ext=%%~xf"
    ren "%%~f" "%new_prefix%!file_ext!"
)

原有自动生成的ren path\does.not.work.* test.*类命令,统一调整为调用脚本的格式即可:
rename_keep_ext.bat "path\does.not.work.*" "test"
该脚本通过%%~xf扩展符精准提取文件的最终扩展名,完全不受文件名中间点的影响,符合预期重命名逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:18:02