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

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

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

Сообщение 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'}
Аватара пользователя
Алексей Максимов
Администратор сайта
Сообщения: 572
Зарегистрирован: 14 сен 2012 06:50
Откуда: г.Сыктывкар
Контактная информация:

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

Сообщение Алексей Максимов »

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

Чтобы получить все вложенные элементы, можно добавить параметр -Recurse к командлету Get-ChildItem
Подробнее с примерами здесь.
Аватара пользователя
George M
Сообщения: 2
Зарегистрирован: 26 апр 2021 13:18

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

Сообщение George M »

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

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

Сообщение Алексей Максимов »

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

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