2013-06-07 29 views
5

Tôi hiện đang chạy tập lệnh PowerShell (v3.0), một bước trong đó là truy xuất tất cả các tệp HTML trong một thư mục. Đó là các công trình lớn:Làm cách nào để sử dụng tham số -filter của PowerShell để loại trừ các giá trị/tệp?

$srcfiles = Get-ChildItem $srcPath -filter "*.htm*"

Tuy nhiên, bây giờ tôi đang phải đối mặt với việc phải xác định tất cả các tập tin không phải là HTML ... CSS, Word và Excel tài liệu, hình ảnh, vv

Tôi muốn cái gì đó sẽ hoạt động như thông số -ne kết hợp với tham số -filter. Về bản chất, cho tôi tất cả mọi thứ đó là không"*.htm*"

-filter -ne không làm việc, tôi đã cố gắng -!filter trên một ý thích, và tôi dường như không thể tìm thấy bất cứ điều gì trong PowerShell doc trên MSDN để phủ nhận tham số -filter. Có lẽ tôi cần phải ống một cái gì đó ...?

Có ai có giải pháp cho việc này không?

Trả lời

5

-Filter không đúng cách. Sử dụng các tham số -exclude thay vì:

$srcfiles = Get-ChildItem $srcPath -exclude *.htm* 

-exclude chấp nhận một loại string[] như một đầu vào. Bằng cách đó, bạn có thể loại trừ nhiều loại tiện ích/loại tệp như sau:

$srcfiles = Get-ChildItem $srcPath -exclude *.htm*,*.css,*.doc*,*.xls* 

..Và cứ thế.

+0

yea .. với cảnh báo nhỏ rằng việc thêm -exclude thực sự có thể ** thay đổi cấu trúc đầu ra của bạn **. Tôi đã có 'Get-ChildItem -Path" * .Tests "-Directory' để lấy tất cả các thư mục kết thúc bằng 'Tests', và nó hoạt động như mong đợi: trả về 1 nhóm với vài mục là xx.Tests directory mình .. Khi tôi thêm '-Exclude 'Common. *'', sau đó thay vì loại trừ "Common.Tests", nó đã làm một cái gì đó kỳ lạ như trở về vài nhóm với nội dung của thư mục xxx.Tests bên trong mỗi .. – quetzalcoatl

4

Tôi mới hơn một chút so với PowerShell, nhưng bạn có thể đăng nhập vào lệnh where?

$srcfiles = Get-ChildItem $srcPath | where-object {$_.extension -ne "*.htm*"} 

Tôi không chắc chắn thuộc tính thực sự bạn sẽ sử dụng tại chỗ "tiện ích mở rộng" là gì.

+0

Bạn có chắc rằng globbing hoạt động trong '- ne'? Tôi vừa thử các thư mục lọc với '$ _. Tên -ne 'Common. *'' Và nó hoàn toàn không hoạt động. Nó chỉ hoạt động khi tôi chuyển tên đầy đủ như '$ _. Name -ne 'Common.Tests'' – quetzalcoatl

Các vấn đề liên quan