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

使用PowerShell移除文件扩展名报错:双.txt后缀文件重命名失败

解决PowerShell重命名双.txt扩展名文件的报错问题

原脚本的错误原因

  1. -Name参数导致对象丢失:添加-Name后,Get-ChildItem仅返回纯文件名字符串,而非完整的FileInfo对象,因此$_.BaseName属性为空,传给Rename-Item时就会触发路径为空的报错。
  2. Rename-Item用法错误:即便拿到正确的文件对象,原脚本仅传入新名称,未指定要重命名的文件路径,不符合命令语法要求。

正确的解决脚本

方案一:精准筛选双.txt扩展名文件

直接用过滤器匹配目标文件,只处理xxx.txt.txt格式的文件:

Get-ChildItem -Filter *.txt.txt -Recurse -File | ForEach-Object {
    Rename-Item -Path $_.FullName -NewName $_.BaseName
}

解释:$_.FullName提供文件的完整路径(确保Rename-Item能准确定位文件),$_.BaseName会自动去掉最后一个.txt扩展名(比如file1.txt.txt的BaseName就是file1.txt),刚好满足需求。

方案二:灵活筛选目标文件

如果需要先遍历所有.txt文件,再过滤出双扩展名的文件,用这个脚本:

Get-ChildItem -Filter *.txt -Recurse -File | Where-Object { $_.BaseName -match '\.txt$' } | ForEach-Object {
    Rename-Item -Path $_.FullName -NewName $_.BaseName
}

解释:Where-Object的条件会筛选出BaseName本身以.txt结尾的文件(即原文件为xxx.txt.txt),再执行重命名操作。

安全测试提示

如果担心误操作,可以先添加-WhatIf参数预览执行效果,确认无误后再去掉该参数:

Get-ChildItem -Filter *.txt.txt -Recurse -File | ForEach-Object {
    Rename-Item -Path $_.FullName -NewName $_.BaseName -WhatIf
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:37:47