批量重命名文件为祖父目录名称

批量重命名文件为祖父目录名称

目录结构如下:

D:\folder0\subdir1\scan0001.tif
D:\folder0\subdir2\scan0001.tif
D:\folder0\subdir3\scan0001.tif
D:\folder0\subdir1\RAW\raw0001.tif
D:\folder0\subdir2\RAW\raw0001.tif
D:\folder0\subdir3\RAW\raw0001.tif

目前 RAW 目录中的文件名称如下

raw0001.tif
raw0002.tif
raw0003.tif

我想将它们重命名为

subdir1 raw 01.tif
subdir1 raw 02.tif
subdir1 raw 03.tif

我找到了如何subdir#通过执行重命名文件

ls *tif |
Foreach {$i=1} {Rename-Item $_ -NewName ("$($_.directory.name) scan {0:0#}.tif" -f $i++)}

但是我不知道如何修改上述命令来查看祖父目录(subdir1)。

答案1

这将解析文件名并使用现有的基本名称和索引:

gci *.tif | Rename-Item -NewName {
    $_.Name -match '([^\d]+)(\d+)' | out-null
    $splat = @(
        $_.directory.parent.name,
        $matches[1],
        [Int]$matches[2]
    )
    '{0} {1} {2:00}.tif' -f $splat
}

相关内容