0

总的来说,我是脚本和 shell 的新手,但我想自动化这个,因为这需要我很长时间。我有一个文件夹,里面有 37 个文件夹,在这 37 个文件夹中,有不同数量的子目录,10、12 等。在这些子目录中,有从 0 到 n 个图像的图像子目录。

所以我的文件夹是这样的:

G(Main Folder) > G1, G2...G37

例如,在 G1 中: G1 > G'1,G'2,G'3...

这适用于 G 中的每个 Gn 文件夹。

我想根据当前所在的 Gn 文件夹重命名 G'n 文件夹中的所有图像。例如:在G1中有8个文件夹(G'1,G'2等),第一个有10张图片,所以我想把它们都从00重命名为10,然后在第二个,有 18 张图片,所以从 11 开始,我想将它们从 11 重命名为 18,依此类推。然后将所有这些图像移动到 G1 文件夹。

所有这一切也适用于其余的 37 G 文件夹及其 300 多个子目录。谢谢!

4

1 回答 1

0

我创建了一些测试文件夹和文件,这对我有用。请确保在运行此脚本时创建一个测试文件夹/备份。

$folderInMainFolder = ls "D:\G"

$n = 0
$i = 0

foreach($folder in $folderInMainFolder){

    $items = ls $folder.FullName

    foreach($item in $items)
    {
        Rename-Item $item.FullName -NewName "$n$i.jpg" -Force
        $i++

        if($i -eq 10)
        {
            $i = 0
            $n++
        }
    }
}

#Move all the files to the directory G1
Get-ChildItem "D:\G" -Filter *.jpg -Exclude "D:\G\G1" -Recurse | Move-Item -Destination "D:\G\G1" -Force
于 2019-10-09T10:14:56.600 回答