【问题标题】:Capitalising the first letters in file name大写文件名中的第一个字母
【发布时间】:2017-11-21 19:47:09
【问题描述】:

有没有办法批量大写文件和/或文件夹中每个单词的首字母。即 dennis brown - love light (slow version).mp3 但我希望它看起来像 Dennis Brown - Love Light (Slow Version).mp3? 这是可以通过powershell完成的吗?

【问题讨论】:

  • 您尝试过什么,您尝试过什么失败了?理想情况下,您应该提供一个minimal reproducible example 您尝试过的内容,并包含有关它如何失败的具体信息,以及错误消息和/或错误输出。 Stack Overflow 不是代码编写服务;最好的问题是那些提供有用信息的问题,以便回答的人可以指导您设计自己的正确答案。见How to Ask
  • 在给出强制性的“做一些研究并展示你的工作”警告后,我会提到Get-Culture 返回的对象有一个成员TextInfo,它有一些你会发现的方法有用。我还要提醒您,Windows 是一个“大小写”操作系统——也就是说,它保留了文件名的大小写,但认为大写和小写是相同的。
  • 我没有尝试任何公平的方法,但是我到处搜索,我对 PowerShell 不太熟悉,但从这个网站学到了我所知道的。

标签: powershell capitalization


【解决方案1】:

当然,PowerShell 有一个内置方法来执行此操作,使用 Get-Culture cmdlet 根据您的区域偏好将字符串大写。这是对一个字符串执行此操作的方法。

(Get-Culture).textinfo.totitlecase("some thing to uppercase".tolower())
>Some Thing To Uppercase

由于一开始可能很难消化,所以我为您编写了一个小示例。此示例显示每个文件的新名称。如果您喜欢您所看到的,请删除-WhatIf 参数。

$files = Get-childitem -Path C:\temp

ForEach($file in $files){
    $CapitalizedName = (Get-Culture).textinfo.totitlecase($file.BaseName.tolower())
    $NameDotExt = "$CapitalizedName$($file.Extension)"
    Rename-item -Path $file.Fullname -NewName $NameDotExt -WhatIf

}

感谢this blog post 强调了这项技术。

【讨论】:

  • 这并没有考虑到 Windows 所做的“大小写粉碎”。
  • 很高兴不知道你可以为 Fox 的帖子做这件事
猜你喜欢
  • 2014-01-02
  • 2014-12-23
  • 2013-06-22
  • 2018-07-08
  • 1970-01-01
  • 2013-09-01
  • 2023-03-31
  • 2012-05-22
  • 2011-09-29
相关资源
最近更新 更多