【问题标题】:Windows Powershell renaming files not writing Files [duplicate]Windows Powershell重命名文件不写入文件[重复]
【发布时间】: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


【解决方案1】:

如果我做对了,这样的事情实际上应该足够了:

Get-ChildItem | 
Sort-Object -Descending |
ForEach-Object {
    $_.BaseName -match '\d+' | Out-Null
    $Number = $matches[0] -as [int]
    $NewName = $_.BaseName -replace '\d+', $($Number +1)
    Rename-Item -Path $_.FullName -NewName ($NewName + $_.Extension)
}

【讨论】:

    【解决方案2】:

    您需要删除-WhatIf,终端正在给您结果而不执行操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 2018-04-21
      • 2017-06-09
      • 2017-12-10
      • 2011-04-18
      相关资源
      最近更新 更多