Страница 1 из 1

Как применить (зациклить) скрипт для каждого каталога

Добавлено: 26 апр 2021 13:20
George M
Всем привет. Я новичок в powershell.

Есть дерево каталогов, нужно выполнить этот скритп, заходя в каждый каталог на 1 уровень, потом в следующий, и так далее. В гугле не смог найти понятное решение.
Никак не получается зациклить скрипт на всё дерево каталогов.

Код: Выделить всё

New-Item Automap -ItemType Directory
Get-ChildItem -Path . -Exclude *.max |
    Where-Object { -not $_.PsIsContainer } |
    Where-Object { $_.BaseName -ne $_.Directory.Name } |
    Move-Item -Destination Automap -Force |
    cls
Get-ChildItem -Path $_ *.max | Rename-Item -NewName {$_.Directory.Name +'.max'}

Re: Как применить (зациклить) скрипт для каждого каталога

Добавлено: 26 апр 2021 18:19
Алексей Максимов
Здравствуйте, George M.

Чтобы получить все вложенные элементы, можно добавить параметр -Recurse к командлету Get-ChildItem
Подробнее с примерами здесь.

Re: Как применить (зациклить) скрипт для каждого каталога

Добавлено: 26 апр 2021 18:49
George M
Алексей Максимов писал(а): 26 апр 2021 18:19 -Recurse к командлету Get-ChildItem
Нет, в этом скрипте параметр -Recurse начнет выводить файлы из внутренних каталогов, а мне это не надо. Этот скрипт сам по себе делает то, что нужно в пределах одного каталога. Нужно добавить к нему цикл, либо создать еще один скрипт, который будет его запускать в каждом каталоге корневой папки.

Re: Как применить (зациклить) скрипт для каждого каталога

Добавлено: 27 апр 2021 04:46
Алексей Максимов
Если интересуют вложенные элементы только до определённого уровня, то глубину выборки можно определять с помощью параметра -Depth. Примеры здесь Get-ChildItem