我想把所有文件和目录名改为小写,然后我在这里找到一段powershell脚本:Rename files to lowercase in Powershell
我最喜欢的答案是以下内容,因为它是最干净和简洁的答案。然而,它不包括目录名称,而且我目前没有足够的声望回复该评论。
Get-ChildItem -r | Where-Object { !$_.PSIsContainer } | Rename-Item -NewName { $_.FullName.ToLower() }
我不了解PowerShell,也不打算成为专家,请跳过所有细节,我只需要代码来将我的所有文件和目录重命名为小写,不需要知道它是如何工作的。我不喜欢以下解决方案,因为它过于冗长,并且仅适用于目录名称而不是文件名称。
Where-Object { $_.PSIsContainer -And $_.Name -CMatch "[A-Z]" } |
ForEach-Object {
$NName = $_.Name.ToLowerInvariant()
# Set temporary name to enable rename to the same name; Windows is not case sensitive
$TempItem = Rename-Item -Path $_.FullName -NewName "x$NName" -PassThru
Rename-Item -Path $TempItem.FullName -NewName $NName
}
我希望有一个简单的命令可以重命名文件和目录,类似于第一个示例
当我最初写这篇文章时,我只是想打开PowerShell并粘贴一个命令。事后看来,那也不是最有效的方法。因此,我最终保存了每个脚本(一个用于文件,一个用于文件夹)到一个.ps1文件中,然后将其放在任何你想要修改的目录中,右键单击并选择“使用 PowerShell 运行”,它将重命名所有文件和子目录。
该脚本如下:
# files to lower
Get-ChildItem -r | Where-Object { !$_.PSIsContainer } |
Rename-Item -NewName { $_.FullName.ToLower() }
# folders to lower
$fso = New-Object -ComObject Scripting.FileSystemObject
Get-ChildItem . -rec -dir |
ForEach-Object { $fso.MoveFolder($_.fullname, $_.Fullname.ToLower()) }
具有相同的行为,因此我们在PS中看到这种情况似乎是一个很好的借口。你最好使用
ren` 命令从CMD或者对于PS,将文件夹重命名为临时名称,然后重新命名为小写,这实在是太糟糕了(这就是你的第二个片段正在做的事情...)。 - Santiago Squarzon