使用PowerShell重命名文件

时间:2013-08-07 04:20:50

标签: windows powershell powershell-v2.0

我需要在Windows PowerShell中一次重命名一堆文件。我阅读了HTG文章here,它有所帮助。

我的问题是它只会重命名目录顶部的文件,没有更深层次的内容。例如:有FOLDER A,FOLDERA里面是文件和文件夹B.文件夹B里面是另一个文件。需要重命名文件夹和两个文档。它现在的工作方式是FOLDER A,FOLDER A中的文档和FOLDER B正在重命名,但不是FOLDER B中的文档。

我目前的代码是:

Dir | Rename-Item –NewName { $_.name –replace “ “,”_” }

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

您需要在Dir上指定-Recurse参数以使其递归,例如:

Dir -recurse | Rename-Item -NewName {$_.Name -replace ' ','_'}

BTW这可能会遇到问题,因为您首先重命名包含文档的文件夹(FOLDERB),但与FOLDERB中的文件对应的管道项仍具有旧名称。在这种情况下,您想从下往上重命名。一种非常粗略但有效(我认为)这样做的方法是对文件项的路径长度进行排序,例如:

Dir -recurse | Sort {$_.FullName.Length} -Desc | Rename-Item {$_.Name -replace ' ','_'}