重命名多个目录中的文件

问题描述 投票:0回答:1

我需要重命名文件夹中的文件。这些文件夹遵循以下命名顺序:vdl-1984-01、vdl-1984-02、vdl-1984-03等。我只能在工作中访问powershell,并且所有字段都是tiff,所以我一直在使用

$i=1
Get-ChildItem *.tiff | %{Rename-Item $_ -NewName ('vdl-1984-01-{0:D3}.tiff' -f $i++)}

在每个文件夹上。但是,我想要一个为每个文件夹运行此函数的脚本。这可能吗?在此示例中,两位数字是文件夹编号,三位数生成的数字是文件编号。

我一直在尝试设置一个 Do 循环,其中包括 CD 函数和 -NewName 函数中增加的间隔,但我似乎无法得到有效的东西。

powershell
1个回答
0
投票

也许这对您有用,本质上不是搜索所有

.tiff
文件,而是搜索以
vdl-1984-
开头的所有目录,从那里开始,对于每个目录,您使用父文件夹名称 + 3 位数序列来定位其子文件。所以这样的东西可能对你有用:

$parentPath = 'path\to\vdlFolders'
# filter all directories under the parent folder having a name that starts with `vdl-1984-`
Get-ChildItem $parentPath -Directory -Filter vdl-1984-* | ForEach-Object {
    $index = @(0); $parentName = $_.Name
    # for each directory, get their child files
    # and rename using the parent folder name + the 3 digit incrementing number
    $_ | Get-ChildItem -File | Rename-Item -NewName {
        "$parentName-{0:D3}.tiff" -f $index[0]++
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.