gpt4 book ai didi

windows - 按顺序递归重命名所有子文件夹中的文件

转载 作者:可可西里 更新时间:2023-11-01 10:15:39 25 4
gpt4 key购买 nike

我有一系列文件夹和子文件夹,结构如下:

  • 001/Fabric/Blue/(.jpg 文件,按顺序命名)
  • 001/Fabric/Green/(.jpg 文件,按顺序命名)
  • 002/Fabric/Blue/(.jpg 文件,按顺序命名)
  • 002/Fabric/Green/(.jpg 文件,按顺序命名)
  • 等等

文件名中有多余的字符串字符,我想将其删除,我想将它们的文件名转换为更简单的顺序格式(0.jpg、1.jpg 等)。

我尝试使用几个不同的 PowerShell 示例来实现它。我有递归搜索功能,但是在尝试重命名 ForEach-Object 循环中的文件时,我收到有关 InvalidOperationException 的错误。此外,恐怕我的顺序编号没有为重命名文件的每个文件夹“重置”。

$i = 0
Get-ChildItem -Filter "*.jpg" -Recurse | ForEach-Object {
Rename-Item $_ -NewName ('$i.jpg' -f $i++)
}

那么,两个问题:

  1. 如何修复 Rename-Item 的错误?
  2. 如何确保为脚本开始重命名文件的每个子文件夹重置我的变量?

最佳答案

如果采用两步法,首先获取所有包含 jpg 的文件夹,然后遍历此列表,则从 1 开始没有问题。但我总是使用前导零进行此类重新编号。

$BaseFld = "Q:\Test\"
$Ext = "*.jpg"
$jpgFolders = gci $($BaseFld+$Ext) -Recurse |
Select -ExpandProperty Directory -Unique |
select -ExpandProperty Fullname | Sort

ForEach ($Folder in $jpgFolders) {
Set-location $Folder
$i = 1
Get-ChildItem $Ext | %{Ren $_ -NewName ('{0:D4}.jpg' -f $i++) -whatif}
}

如果输出适合您,请删除倒数第二行中的 -whatif

关于windows - 按顺序递归重命名所有子文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40558686/

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