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

Ответить
Аватара пользователя
George M
Сообщения: 2
Зарегистрирован: 26 апр 2021 13:18

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

Сообщение George M » 26 апр 2021 13:20

Всем привет. Я новичок в 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'}

Аватара пользователя
Алексей Максимов
Администратор сайта
Сообщения: 556
Зарегистрирован: 14 сен 2012 06:50
Откуда: г.Сыктывкар
Контактная информация:

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

Сообщение Алексей Максимов » 26 апр 2021 18:19

Здравствуйте, George M.

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

Аватара пользователя
George M
Сообщения: 2
Зарегистрирован: 26 апр 2021 13:18

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

Сообщение George M » 26 апр 2021 18:49

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

Аватара пользователя
Алексей Максимов
Администратор сайта
Сообщения: 556
Зарегистрирован: 14 сен 2012 06:50
Откуда: г.Сыктывкар
Контактная информация:

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

Сообщение Алексей Максимов » 27 апр 2021 04:46

Если интересуют вложенные элементы только до определённого уровня, то глубину выборки можно определять с помощью параметра -Depth. Примеры здесь Get-ChildItem

Ответить

Вернуться в «Powershell»