我需要重命名文件夹中的文件。这些文件夹遵循以下命名顺序: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 函数中增加的间隔,但我似乎无法得到有效的东西。
也许这对您有用,本质上不是搜索所有
.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]++
}
}