Исключите каталоги в PowerShell

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

25
задан svick 8 August 2009 в 12:01
поделиться

2 ответа

Вы можете использовать свойство PSIsContainer :

gci | ? { !$_.PSIsContainer }

Your подход также будет работать, но должен выглядеть так:

gci | ? { !($_.Attributes -band [IO.FileAttributes]::Directory) }

поскольку атрибуты являются перечислением и битовой маской.

Или, для вашего другого подхода:

gci | ? { "$($_.Attributes)" -notmatch "Directory" }

Это приведет к преобразованию атрибутов в строка (которая может выглядеть как "Directory, ReparsePoint"),а в строке вы можете использовать оператор -notmatch .

PowerShell v3 наконец-то имеет параметр -Directory в Get-ChildItem :

Get-ChildItem -Directory
gci -ad
25
ответ дан 28 November 2019 в 21:16
поделиться

You can also filter out directories by looking at their type directly:

ls | ?{$_.GetType() -ne [System.IO.DirectoryInfo]}

Directories are returned by get-childitem (or ls or dir) of type System.IO.DirectoryInfo, and files are of type System.IO.FileInfo. When using the types as literals in Powershell you need to put them in brackets.

6
ответ дан 28 November 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: