1

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

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

我目前的代码是:

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

谢谢您的帮助!

4

1 回答 1

3

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

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

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

Dir -recurse | Sort {$_.FullName.Length} -Desc | Rename-Item {$_.Name -replace ' ','_'}
于 2013-08-07T04:26:52.923 回答