Переименовать файлы подкаталогов других подкаталогов рекурсивно на powershell? - PullRequest
0 голосов
/ 09 октября 2019

Я абсолютный новичок в написании скриптов и в целом в оболочке, но я бы хотел автоматизировать это, потому что это займет у меня много времени. У меня есть папка с 37 папками, и в этих 37 папках имеется различное количество подкаталогов, 10, 12 и т. Д. И в этих подкаталогах есть изображения, которые переходят от 0 к n-числу изображений вподкаталог.

Итак, моя папка выглядит так:

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

И, например, в G1: G1 > G'1,G'2,G'3...

И это длякаждая папка Gn в G.

Я хотел бы переименовать все изображения в папках Gn в соответствии с папкой Gn, где она находится в данный момент. Например: в G1 есть 8 папок (G'1, G'2 и т. Д.), В первой - 10 изображений, поэтому я бы хотел переименовать их все с 00 на 10, затем вво-вторых, есть 18 изображений, поэтому начиная с 11, я бы хотел переименовать их с 11 до 18 и так далее. А затем переместите все эти изображения в папку G1.

Все это также применимо к остальным папкам 37 G и их подкаталогам размером 300 с чем-то. Спасибо!

1 Ответ

0 голосов
/ 09 октября 2019

Я создал несколько тестовых папок и файлов, и это сработало для меня. Убедитесь, что вы создали тестовую папку / резервную копию при запуске этого скрипта.

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...