在Powershell上递归重命名其他子目录的子目录文件?

时间:2019-10-08 23:01:59

标签: powershell scripting

我一般来说对脚本和Shell完全陌生,但是我想使它自动化,因为这将花费我很长时间。 我有一个包含37个文件夹的文件夹,在这37个文件夹中,有不同数量的子目录,分别是10、12等。在这些子目录中,图像中的图像变为0到n个图像。子目录。

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

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

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

这对于G中的每个G-n文件夹而言。

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

所有这些也适用于其余的37 G文件夹及其300左右的子目录。 谢谢!

1 个答案:

答案 0 :(得分: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
相关问题