2013-05-29 5 views
6

Tôi đang sử dụng Windows 8 chuyên nghiệp và muốn làm điều gì đó mà tôi hy vọng rất đơn giản. Tôi chỉ muốn thực hiện một chương trình chống lại tất cả các tệp của một loại nhất định trong một thư mục. không có cây, chỉ trong thư mục phẳng. Trong Linux tôi sẽ:Cách sử dụng Powershell để thực thi chương trình chống lại tất cả các tệp trong thư mục

find . -name 'exec c:\user\local\bin\myprog {} \; 

Tôi đã theo nghĩa đen dành một vài giờ vật lộn với vỏ điện, chạy vào chính sách khó khăn, quyền, vv Có một số cách đơn giản tôi có thể làm điều này xảy ra?

+0

bạn đã thử lệnh ghép ngắn 'get-childItem' chưa? Nó có một lá cờ 'Exec \t Thực hiện các lệnh Cmdlets trong đối số đã cho.' Điều này có thể hữu ích - http://windows-powershell-scripts.blogspot.com/2009/08/unix-linux-find-equivalent-in.html – Bill

Trả lời

14

này rất dễ dàng nhưng khác với sử dụng find ví dụ:

Get-ChildItem -File | Foreach {c:\user\local\bin\myprog $_.fullname} 

Đối với làm công cụ tại cửa sổ dòng lệnh, bí danh có thể làm điều này một chút ngắn gọn hơn:

ls -file | % {c:\user\local\bin\myprog $_.fullname} 

PowerShell thích lệnh mà hẹp tập trung nhưng có thể được kết hợp với nhau trong một đường ống để cung cấp nhiều khả năng. Ngoài ra, PowerShell còn gọi là các đối tượng .NET ví dụ: Get-ChildItem các đối tượng System.IO.FileInfo. Sau đó bạn có thể sử dụng các lệnh như Foreach, Where, Select, Sort, Group, Format để thao tác các đối tượng truyền xuống đường ống. Nếu bạn có thời gian, tôi khuyên bạn nên kiểm tra ebook miễn phí của tôi Effective PowerShell.

+0

cảm ơn Keith, tôi đã nhận lệnh ls -l .. để làm việc. Tôi giả sử tôi gõ "powershell" tại dấu nhắc DOS đầu tiên, sau đó dán lệnh ls -file vào cửa sổ dấu nhắc dos? Có cách nào tiến thẳng hơn để thực hiện nó không? Ngoài ra, làm thế nào tôi có thể nhận được lệnh thực hiện để echo. nếu không, tôi không thể nói đầu ra là gì từ những gì thực hiện. cảm ơn một lần nữa. –

+0

Tốt hơn để khởi động lời nhắc PowerShell, bạn không cần nhập "powershell". Lệnh sẽ tự động xuất ra bàn điều khiển trừ khi bạn chuyển hướng đến một tệp (hoặc $ null) hoặc nắm bắt đầu ra của chúng trong một biến. –

+0

Thêm một cho ebook miễn phí tuyệt vời. – digaomatias

0

Hãy thử điều này. Thay đổi thư mục vào thư mục đó bằng cách:

cd \path\to\directory\with\files 

chương trình Run chống lại tất cả các file trong một thư mục:

c:\user\local\bin\myprog *.type 

Hope tôi nhận được câu hỏi đúng.

+1

Điều này sẽ chỉ hoạt động nếu 'myprog' chấp nhận ký tự đại diện. Nó không tương đương với lệnh Linux trong ví dụ của OP. –