【发布时间】:2021-10-22 00:33:16
【问题描述】:
您好,我正在尝试重命名文件夹中的每个文件,我想将数字加一,它已经告诉我它在终端中工作,但它没有写入操作。
Get-ChildItem | Sort-Object -Descending | Rename-Item -WhatIf -NewName {
$name = $_.Name
$matches = [regex]::matches($name,'\d+')
$offset = 0
foreach ($group in $matches.groups)
{
$before = $name.substring(0,$group.Index+$offset)
$after = $name.substring($offset+$group.Index+$group.Length)
$number = (1+$group.Value).toString().PadLeft($group.Length,'0')
$name = $before + $number + $after
$offset = $offset + $number.Length - $group.Length
}
$name
}
正如您在资源管理器中看到的,它不会重命名文件,但会以某种方式处理所有文件。
【问题讨论】:
-
-WhatIf是否向我们展示了它会做什么?大声笑 -
@midi 虽然 SO 很欣赏 self-answered questions,但 not apropriate 可以编辑问题的答案,尤其是在屏蔽原始错误代码时。这就是我回滚您的编辑的原因。
-
好的,谢谢@stackprotector。我是 powershell 新手。
标签: powershell rename