2013-08-07 64 views
1

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

我的问题是,它只会重命名目录顶部的文件,没有更深层的。例如:有FOLDER A,FOLDERA内部是文件和FOLDER B,FOLDER B内部是另一个文件。这两个文件夹和两个文件都需要重新命名。现在运转的方式是文件夹,在文件夹中的文档,文件夹B被重命名,而不是文件夹B.文件里面

我当前的代码是:

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

感谢帮助!

回答

3

你需要指定迪尔的-Recurse参数让它递归如:

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

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

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

与返回错误: 重命名,编号:不能重命名,因为指定的目标代表路径或设备名称。 – Kyle2595

+0

错读你的问题。查看更新后的答案是否解决您的问题。 –

+0

很酷,非常感谢!它像一个魅力一样工作! – Kyle2595

相关问题