如何使用PowerShell为子文件夹中的无扩展名文件添加.txt扩展名
给无扩展名文件批量添加.txt扩展名的正确PowerShell方法
嘿,我看你之前试的两个命令都踩了点小坑,咱们来修正下:
先说说你之前命令的问题:
- 第一个命令里,
-Filter参数不支持{!($_.Extension)}这种脚本块写法,它只认通配符;而且重命名时用$_.DirectoryName + '.txt'会把文件的完整路径当成新文件名,这根本不是你要的效果,反而会搞乱文件命名。 - 第二个命令语法本身就不对,而且用
$_.Directory.Name + '.txt'会把所有无扩展名文件都改成所在文件夹的名字加.txt,同文件夹里的这类文件直接就重名报错了,完全不符合需求。
给你两个靠谱的解决方案,选哪个都行:
方案一:简洁直接版
Get-ChildItem -Path "G:\Those" -File -Recurse | Where-Object { $_.Extension -eq '' } | Rename-Item -NewName { $_.Name + '.txt' }
方案二:安全预览版(推荐新手用)
如果你怕误改文件,可以先加-WhatIf参数预览所有要修改的操作,确认没问题再去掉参数执行实际修改:
# 先预览修改效果,不会真的改文件 Get-ChildItem -Path "G:\Those" -File -Recurse | Where-Object { $_.Extension -eq '' } | Rename-Item -NewName { $_.Name + '.txt' } -WhatIf # 确认后执行实际重命名 Get-ChildItem -Path "G:\Those" -File -Recurse | Where-Object { $_.Extension -eq '' } | Rename-Item -NewName { $_.Name + '.txt' }
这个命令的逻辑很清晰:
- 先递归遍历
G:\Those下的所有文件(只找文件,排除文件夹) - 筛选出那些没有扩展名的文件
- 给每个符合条件的文件在原文件名后面加上
.txt扩展名
这样就能精准完成你要的批量修改啦~
内容的提问来源于stack exchange,提问作者Matt M
相关产品推荐
相关产品推荐

