我需要在PowerShell中编写一个脚本,该脚本重命名给定目录及其所有子文件夹下没有扩展名的所有文件。重命名是指添加扩展名,例如“ .html”到没有该文件的文件。 到目前为止,我已经尝试构建如下内容:
Get-ChildItem -Path 'C:\dev\blah' -Filter *. -Recurse | ForEach-Object {
Rename-Item -Path $_.FullName -NewName ($_.FullName + ".html")
}
答案 0 :(得分:2)
您需要从枚举项目中排除文件夹。如果您正在运行PowerShell v3或更高版本,请使用开关-File
,否则请添加Where-Object
过滤器。另外,由于ForEach-Object
接受管道输入,因此您不需要Rename-Item
。
Get-ChildItem -Path 'C:\dev\blah' -Filter *. -Recurse | Where-Object {
-not $_.PSIsContainer
} | Rename-Item -NewName {$_.Name + ".html"}