在Powershell中将文件重命名为小写?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (193)

我试图用Powershell 2.0递归地重命名一堆文件。目录结构如下所示:

Leaflets
+ HTML
  - File1
  - File2
  ...
+ HTMLICONS
  + IMAGES
    - Image1
    - Image2
  - File1
  - File2
  ...
+ RTF
  - File1
  - File2
  ...
+ SGML
  - File1
  - File2
  ...

我正在使用以下命令:

get-childitem Leaflets -recurse | rename -newname { $_.name.ToLower() }

它似乎重命名文件,但子目录:

Rename-Item : Source and destination path must be different.

我使用robocopy每月重新加载数据,但目录不会更改,所以我可以手动对它们进行重命名。有没有办法get-children跳过子目录(如find Leaflets -type f ...)?

提问于
用户回答回答于

下面是一个变体:

dir Leaflets -r | % { if ($_.Name -cne $_.Name.ToLower()) { ren $_.FullName $_.Name.ToLower() } }
用户回答回答于

请记住,你可以直接管理Rename-Item,并使用带有 - NewName参数的Scriptblocks (因为它也接受管道输入)来简化此任务:

Get-ChildItem -r | Where {!$_.PSIsContainer} | 
                   Rename-Item -NewName {$_.FullName.ToLower()}

和别名:

gci -r | ?{!$_.PSIsContainer} | rni -New {$_.FullName.ToLower()}

扫码关注云+社区

领取腾讯云代金券