gpt4 book ai didi

powershell - 使用if条件递归重命名

转载 作者:行者123 更新时间:2023-12-02 23:27:05 24 4
gpt4 key购买 nike

我在将重命名与if条件组合在一起时遇到了很大的麻烦。当文件具有与以前相同的名称时,PS无法重命名,之后将不执行任何操作。
另外,它无法递归重命名。

我想做某事:

$entrys = Get-ChildItem -Recurse $myPath
foreach ($name in $entrys) {
$newName=$name.FullName -replace('[\,\/\*\+\#\~\-\=\^\°\$\%\&\<\>\|]','')
if (-not ($newName -like $name)) {
Rename-Item $name -NewName $newName
}
}

我发现了类似 here的东西,但那里没有任何条件。

因此,如何在重命名之前将它传递给if条件,以便可以直接从get-childitem -recurse传递给 if() then rename()?还是还有另一种可能性?

感谢帮助

最佳答案

尝试您的代码时,我遇到了同样的问题,即它无法重命名该文件。但是,我修改了一些代码,现在看来可以了:

$entrys = Get-ChildItem -Recurse $myPath -File
foreach ($name in $entrys) {
$newName = $name.Name -replace('[\,\/\*\+\#\~\-\=\^\°\$\%\&\<\>\|]','')
if ($newName -ne $name.Name) {
Rename-Item -LiteralPath $name.FullName -NewName $newName
}
}

首先,您只需要检查文件而不是文件夹。因为一旦重命名了文件夹,当您递归到不存在的文件夹名称(已更改的文件夹)时,将不再找到文件。

如果还需要重命名文件夹。由于文件夹名称可能会更改,因此需要更多工作。

希望这可以帮助你。

关于powershell - 使用if条件递归重命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32329866/

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