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

PowerShell替换文本STRING:开头行时无法正确带入无扩展名文件名问题

故障原因

脚本替换后文件名丢失的核心原因是管道对象类型错误:

  • 你通过Select -expand fullname将Get-ChildItem输出的文件对象转成了纯字符串格式的完整路径
  • 字符串类型的路径没有BaseName属性,因此$($_.BaseName)实际取值为空,最终替换结果就只有STRING: 前缀,没有拼接文件名
修正后可直接运行的脚本
$src = "C:\Input"
Get-ChildItem $src -Recurse -Filter *.mi | ForEach-Object {
    (Get-Content $_.FullName) -replace "^STRING: .+", "STRING: $($_.BaseName)" | Set-Content $_.FullName
}
修改点说明
  • 移除了Select -expand fullname步骤,直接在循环中处理Get-ChildItem输出的原生文件对象,此时$_.BaseName可以正确读取到当前文件不含扩展名的文件名
  • 正则匹配增加了行首锚点^,仅匹配行开头为STRING: 的目标行,避免误替换文本行中间出现的同格式内容
  • 如果需要指定输出文件编码,可在Set-Content后追加-Encoding参数,例如Set-Content $_.FullName -Encoding UTF8,避免默认编码导致的中文乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:06:19