Имея папку с подкаталогами, как я могу удалить все (используя PowerShell) в подкаталогах, кроме * .html и * .css - PullRequest
0 голосов
/ 07 февраля 2019

Дано:

MainFolder

Подкаталог1

index.html

main.css

images (папка)

readme.text

Подкаталог2

index.html

main.css

images (папка)

readme.text

Когда скрипт запустится, мне нужно будет пройти через каждый подкаталог вв главную папку (можно указать по конкретному пути) и удалите все, кроме файлов .css и .html, включая папки.

Я ожидаю, что конечный результат будет выглядеть следующим образом: Дано:

MainFolder

Подкаталог1

index.html

main.css

Sub-directory2

index.html

main.css

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Красиво и просто.Для каждого элемента он проверяет, не является ли расширение равным .html или .css, и удаляет их, если это не так.

Get-ChildItem -File |
ForEach-Object { 
    If($_.Extension -ne ".html" -and $_.Extension -ne ".css") { 
        Remove-Item $_.FullName
    }
}
0 голосов
/ 07 февраля 2019

Все, что вам нужно сделать, это следовать примерам во встроенных файлах справки для…

# get function / cmdlet details
(Get-Command -Name Get-ChildItem).Parameters
Get-help -Name Get-ChildItem -Examples
Get-help -Name Get-ChildItem -Full
Get-help -Name Get-ChildItem -Online

(Get-Command -Name Remove-Item).Parameters
Get-help -Name Remove-Item -Examples
Get-help -Name Remove-Item -Full
Get-help -Name Remove-Item -Online    

# Get parameter that accept pipeline input
Get-Help Get-ChildItem -Parameter * | 
Where-Object {$_.pipelineInput -match 'true'} | 
Select * 

Get-Help Remove-Item -Parameter * | 
Where-Object {$_.pipelineInput -match 'true'} | 
Select *

В частности, обратите внимание на ключ -Exclude

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...