【问题标题】:Powershell Renaming with sequential numeric suffixes具有顺序数字后缀的 Powershell 重命名
【发布时间】:2018-01-09 21:33:12
【问题描述】:

我需要以下重命名脚本方面的帮助。我正在尝试通过在末尾添加 RAW 并增加数字来重命名以下文件

原始文件名:

AFC17073199C
AFC17080199C
AFC17080299C

重命名后的文件应该是:

AFC17073199CRAW.101
AFC17080199CRAW.102
AFC17080299CRAW.103

使用的脚本:

cd D:/TempKIG/F.kig_TEMP/E.kig_FILES/F.kig_0829460180

ls

$files = Get-ChildItem -File -Filter '*99C'
$global:i = 0; Get-Random $files -Count $files.Count | 
 Rename-Item -NewName { "$files"+'RAW.{0:100}' -f ++$global:i}

SET resexe=0

【问题讨论】:

  • 请描述您面临的问题、您遇到的任何错误消息以及一个实际的问题
  • 请允许我给你一个标准的建议给新手:如果一个答案解决了你的问题,请点击它旁边的大复选标记 (✓) 接受它,也可以选择给它投票(up - 投票需要 15 个或更多声望点)。如果您发现其他答案有帮助,请给他们投票。接受(您将获得 2 个声望点)和投票可以帮助未来的读者。请参阅the relevant help-center article。如果您的问题尚未得到完全解答,请提供反馈或self-answer

标签: shell powershell scripting


【解决方案1】:

我相信您的问题是您需要遍历文件。使用ForEachForEach-Object。然后您可以将要重命名的单个文件通过管道传输到Rename-Item

$i = 1
Get-ChildItem D:/TempKIG/F.kig_TEMP/E.kig_FILES/F.kig_0829460180 -File -Filter '*99C' |
    ForEach-Object {
        $_ | Rename-Item -NewName { "$($_.basename)RAW.{0:100}" -f $i}
        $i++
    }

也不需要将$i 放入全局范围。如果您想随机化顺序,您可以先将Get-ChildItem 输入Sort-Object {Get-Random},然后再输入ForEach-Object

如果您在 Windows 上运行 PowerShell,SET resexe=0 可能没有按照您的意愿执行。这将设置变量${resexe=0} = $null。如果您想使用Set(它是Set-Variable 的别名),您可能需要使用set resexe 0。但是$resexe = 0 更简洁。

【讨论】:

  • 非常感谢 BenH 的帮助。文件被正确重命名。但我有增加序列的问题。它被重命名为所有文件的 .101。我们该如何解决这个问题?
  • @TusvinIyadoo 这就是我只在一个文件的数组上进行测试所得到的。我更新了我的答案,将增量分成另一个语句。
  • @TusvinIyadoo 如果答案对您有用,最好接受它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-14
  • 2020-09-14
  • 1970-01-01
  • 2020-04-28
  • 2010-09-17
  • 2020-10-16
  • 2019-01-19
相关资源
最近更新 更多