Показать полную графическую версию : [решено] Помощь с сортировкой в get-childitem
kelevara
06-05-2013, 19:39
Необходимо вывести содержимое каталога windows на экран и в текстовый файл, учитывая следующие фильтры:
- только папки
- последняя буква имени s или t
- сортировка по именам
написал такой командлет:
get-childitem c:\windows\ -exclude *.* -include *s, *t > list.txt
При этом он выводит данные только в текстовый файл. Собственно как можно реализовать фильтрацию? С помощью -filter? Но тогда какой аргумент у этого параметра должен быть?
dir c:\windows -inc *[st] | Where {$_.PsIsContainer} |select -exp name | sort > dir.txt
kelevara
06-05-2013, 20:40
Kazun, спасибо, все работает =)
Но просьба, если конечно Вам не сложно, расшифровать командлет. Хочется понимать, что там происходит.
1) Получаем список директорий,которые заканчиваются на s или t,или содержат только s или t
dir - альяс на командлет get-childitem
*[st] - подробнее get-help about_Wildcards
Оболочка Windows PowerShell поддерживает несколько подстановочных
знаков наряду с подстановочным знаком звездочки.
Описание подстановочного знака Пример Совпадает Не совпадает
-------- ------------------ -------- ----------------- --------
* Совпадает с нулем или a* A, ag, Apple banana
большим числом знаков
? Совпадает точно с одним ?n an, in, on ran
знаком в указанной позиции
[ ] Совпадает с диапазоном [a-l]ook book, cook, look took
знаков
[ ] Совпадает с указанными [bc]ook book, cook hook
знаками
2) Далее,передаем объекты командлету Where-Object для проверки условия,что объект является директорией,за это отвечает свойтсво - PsIsContainer
3) Те объекты,которые попадают под условие,передаем командлету Select-Object и раскрываем свойство Name
4) Сортируем по имени
5) Перенаправляем в файл с именем dir.txt
По каждому командлету,можно почитать справку:
Get-Help Get-ChildItem -Full
Get-Help Where-Object -Full
Get-Help Select-Object -Full
Get-Help Sort-Object -Full
Get-Help about_Redirection
kelevara
06-05-2013, 23:33
Огромное спасибо! Вроде все более или менее понял! =)
Но по ходу разбирательства у меня возник такой вопрос: можно ли как-то одновременно осуществить вывод результата не только в текстовый файл, но и на экран. Понятно, что можно продублировать командлет, не указав в одной из копий перенаправление вывода. Но может быть это можно сделать как-то более изящно?
Tee-Object (http://technet.microsoft.com/en-us/library/hh849937.aspx)
Using the Tee-Object Cmdlet (http://technet.microsoft.com/en-us/library/ee177014.aspx)
Foreigner
07-05-2013, 07:07
можно ли как-то одновременно осуществить вывод результата не только в текстовый файл, но и на экран. »
help tee-object
gci | tee 1.txt
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.