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

PowerShell中如何给指定格式文件名扩展名前添加指定文本?

解决PowerShell批量给指定格式文件名添加(sample)的问题

原代码问题分析

你写的代码会重复添加扩展名,是因为$_.Name已经包含了完整的文件名(比如file1.mp4),再拼接$_.Extension就会变成file1.mp4(sample).mp4,导致扩展名重复。

正确解决方案

方法1:使用BaseName属性(推荐)

利用PowerShell文件对象的BaseName属性(不含扩展名的文件名)和Extension属性(带点的扩展名)拼接新文件名,同时支持MP4、MKV多种格式:

# 批量处理当前目录下的MP4和MKV文件
Get-ChildItem *.mp4, *.mkv | ForEach-Object {
    Rename-Item -Path $_.FullName -NewName "$($_.BaseName)(sample)$($_.Extension)"
}

方法2:正则替换方式

通过正则表达式匹配文件名的扩展名部分,替换为(sample)+扩展名,写法更简洁:

# 预览重命名效果(-WhatIf参数可先验证,确认后删除)
Get-ChildItem *.mp4, *.mkv | Rename-Item -NewName { $_.Name -replace '(\.[^.]+)$', '(sample)$1' } -WhatIf

# 实际执行(去掉-WhatIf)
Get-ChildItem *.mp4, *.mkv | Rename-Item -NewName { $_.Name -replace '(\.[^.]+)$', '(sample)$1' }

额外注意事项

  • 使用$_.FullName而非$_.Name:如果脚本运行目录不是目标文件所在目录,Name可能导致文件找不到,FullName是完整路径更可靠。
  • -WhatIf参数:建议先添加该参数预览重命名结果,确认无误后再执行实际重命名操作,避免误改文件。
  • 处理子目录文件:如果需要递归处理所有子目录里的目标格式文件,给Get-ChildItem加上-Recurse参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:45:41