gpt4 book ai didi

powershell - 我如何修改此 PowerShell 脚本以包括将目录名称更改为 lower?

转载 作者:行者123 更新时间:2023-12-05 04:38:35 27 4
gpt4 key购买 nike

我正在尝试将所有文​​件和目录重命名为 lower,我在这里找到了一个 powershell 脚本:Rename files to lowercase in Powershell

我最喜欢的答案如下,因为它是最简洁明了的答案。但是,它不包括目录名称,而且我还没有足够的代表来回复评论

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

我不了解 PowerShell,也不打算精通,请跳过所有细节怎么运行的。我不喜欢下面的解决方案,因为 1,它太冗长,2,它只处理目录名而不处理文件名。

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()) }

最佳答案

正如您在提供的代码中提到的,Windows 不是区分大小写的操作系统,因此您需要将目录重命名为临时名称(例如,在降低它后插入一个字符)然后再次重命名(通过删除插入的字符)

我如下修改了你的行,以便能够降低目录和文件,请试一试

Get-ChildItem -r  | Rename-Item -NewName { $_.Name.ToLower().Insert(0,'_') } -PassThru |  Rename-Item -NewName { $_.Name.Substring(1) }

关于powershell - 我如何修改此 PowerShell 脚本以包括将目录名称更改为 lower?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70558411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com