在 Recurse Filerename Powershell 中重置新文件夹的文件编号

Reset Filenumber for new folder in Recurse Filerename Powershell

我正在处理 powershell 批处理文件。

我想重命名一定数量的文件夹中的所有文件。我需要将其重命名为文件夹名称的某个部分,后跟一个递增的数字。到目前为止,我设法在 powershell 中创建了一个重命名命令,该命令还向文件添加了数字。

Get-ChildItem -recurse -filter "*.jpg" | %{$x=1} {Rename-Item $_.FullName -NewName ('{0}-{1}.jpg' -f ($_.FullName.substring(18,8) -replace("-","")) ,$x++)}

无论我想为每个单独的文件夹将数字重置回 1,这都很有效。目前,我一直在通过不同的文件夹进行编号。更改文件夹后如何将 $x 重置为 1?

由于您不能确定每个目录都被逐一枚举,因此我将创建一个哈希表来跟踪索引。类似于:

$Directories = @{}
Get-ChildItem -recurse -filter "*.jpg" | ForEach {
    Rename-Item $_.FullName -NewName ('{0}-{1}.jpg' -f ($_.FullName.substring(18,8) -replace("-","")) ,++$Directories[$_.DirectoryName])
}