2017-01-19 12 views

ответ

2

Это довольно просто!

Вы сделаете это с помощью двух отдельных фильтров, которые PowerShell достигает с помощью командлета Where-Object. Этот командлет принимает сравнения в формате {$_.PropertyName -eq "Something"} или PropertyName -eq "Something". Более поздний формат доступен только на PowerShell v3 и выше.

Во-первых, для фильтрации только файлов выше 100 КБ.

Where-Object Length -ge 100KB

Вторая часть, где имя файла содержит что-то.

Where-object Name -like "*lowRes.jpg*"

Вы можете присоединиться к ним, но я бы просто труба одна в другую, как это.

dir *.jpg -Recurse | Where-Object Length -ge 100KB | Where-object Name -like "*lowRes.jpg*"

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

И, наконец, проведите все это в командлете Export-Csv, и все готово!

+0

Есть ли причина того, что вы разделяете ваши 'Where' заявления, или это просто личное предпочтение? '' Также просто хотел сказать, что я большой поклонник вашей серии о том, как создавать графические и потоковые записи в блогах. '' – TheMadTechnician

+0

Я разделил их, потому что вы не можете присоединиться к операторам и поддерживать новый легко читаемый синтаксис. Мне нравится новый синтаксис, поэтому я добавляю крошечную неэффективность использования двух отдельных команд. Некоторые не согласны, и все в порядке, но мне просто легче читать и интерпретировать. И я рад, что вам нравится сайт. Дайте мне знать, если вы хотите, чтобы я затронул определенную тему :) – FoxDeploy

+0

Почему бы не использовать напрямую 'ls * _lowres.jpg -Rec'? – LotPings

0

вы можете сделать это просто так:

Get-ChildItem "C:\temp" -Recurse -file -filter "*_lowRes.jpg" | 
       Where Length -ge 100KB | select fullname, Length | 
           export-csv "c:\temp\result.csv" -NoType 

короткой версию (без всяких пуристов):

gci "C:\temp" -Rec -file -filter "*_lowRes.jpg" | ? L -le 100KB | select fu*, le* | epcsv "c:\temp\result.csv" -Not