2009-04-18 21 views
5

Tôi đang cố gắng xây dựng một hàm sẽ hiển thị cho tôi tất cả đường dẫn nơi đặt một tên tệp nhất định. Hàm sẽ lấy một tham số, đó là tên tệp. Kết quả sẽ là danh sách tất cả các đường dẫn hoặc thông báo cho biết không có tệp nào trên hệ thống.Nhận quyền hạn để hiển thị tất cả các đường dẫn nơi một tệp nhất định có thể được tìm thấy trên một ổ đĩa

Tôi mới sử dụng Powershell và tôi chưa nhận được cú pháp. Tôi đã thử điều này:

Get-ChildItem -Path -Include notepad.exe 

Nhưng điều đó đã đưa ra thông báo lỗi. Tôi hiện đang cố gắng:

$i="notepad.exe" 

Foreach ($i in Get-ChildItem c:\ -Recurse){echo -Path} 

Bắt đầu bây giờ, nó vẫn đang chạy, không biết điều gì sẽ xảy ra, thực sự.

CHỈNH SỬA: echo'd một số lượng lớn các dòng chỉ cần nói "-Path" ...

Ai cũng có thể giúp giải quyết vấn đề này? Tôi đang chạy Powershell 1.0 bằng cách này.

Vì vậy, để giải thích những gì tôi muốn nhìn thấy khi thực hiện lệnh này, đây là một ví dụ về những gì tôi mong đợi sau khi tìm kiếm * .txt:

C:/foo.txt
C:/A/foobar.txt
C:/A1/foo.txt

Và như vậy, danh sách các đường dẫn đến tất cả. tệp txt trên đĩa cứng của tôi. Chỉ các đường dẫn, mỗi đường một dòng, không cần thêm thông tin.

EDIT2:

Tôi đã thực hiện. Tôi sẽ để lại câu hỏi này cho những người tìm kiếm điều này trong tương lai.

Chức năng tôi đã sử dụng được này (ví dụ cụ thể này sẽ đưa cho bạn một danh sách tất cả các file .zip trên ổ cứng của bạn, chỉnh sửa nếu cần thiết):

Get-ChildItem -Path c:\ -Include "*.zip" -Recurse -Force -Name > c:\listOfPaths.txt 

này tạo ra một tập tin gọi là listOfPaths.txt trên của tôi C: \ thư mục và danh sách này chứa danh sách tất cả các lần xuất hiện của bất kỳ tệp nào kết thúc bằng .zip trong tất cả thư mục con của đĩa cứng của tôi.

Lỗi "c: \" không được đề cập, nhưng tôi không bận tâm.

EDIT3:

thanks capar for a complete complete version.

Đây là mã capar (hoặc làm thế nào tôi đã nhận nó để làm việc, kể từ Get-Trẻ em không hoạt động trong 1,0)

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName 
+2

1 mang đến cho bạn trở về 0, tôi không thấy bất cứ điều gì xứng đáng của một downvote –

+0

nhờ capar, vẫn cố gắng tìm lệnh này ra.. – KdgDev

+1

Tại sao một người nào đó hãm hiếp bài đăng này và downvote nó? 'Dir * .zip/s> foo.txt' sẽ làm tương tự. – ojblass

Trả lời

9

Vì đêm thứ sáu, tôi quyết định chơi với Power Shell để xem tôi có thể giúp được không :) Điều này khá gần với những gì bạn đang yêu cầu :

Get-ChildItem -Path c:\ -Recurse *.txt | Select-Object -Property FullName 

Nếu nó giúp, lệnh này sẽ liệt kê các thuộc tính của bất kỳ đối tượng đó sẽ được trả lại bởi Get-ChildItem:

Get-ChildItem | Get-Member 
+1

Powershell e rror: Get-Children không phải là một cmdlet được công nhận, chức năng ... Bạn có đang chạy Powershell 2.0 bằng bất kỳ cơ hội nào không? – KdgDev

+2

Được sử dụng Get-ChildItem và nó hoạt động như một sự quyến rũ. Rất tiếc, cảm ơn sự giúp đỡ – KdgDev

+1

Chào mừng bạn. Vui mừng nó đã làm việc ra. –

1

ls c: \ -r | ? {$ _. name -eq "notepad.exe"}

+0

giải quyết, kiểm tra câu trả lời nếu bạn thích. – KdgDev

1

Get-trẻ em không được công nhận trong Powershell V3 một trong hai.Nó sẽ là tuyệt vời nếu ai đó loại bỏ ví dụ xấu đó.

Để cảnh báo cho bất kỳ ai tìm kiếm tệp: C: \ trên ổ đĩa cứng ngày nay sẽ mất nhiều thời gian để chạy. Bạn được khuyên nên thu hẹp tìm kiếm của mình nhiều nhất có thể. Vì cấu trúc thư mục của bạn có thể bao gồm dấu cách hoặc ký tự đặc biệt, hãy sử dụng dấu trích dẫn (") hoặc dấu nháy đơn (') của máy đánh chữ

$ mylistoffiles = Get-ChildItem -Path' C: \ Windows \ Setup \ Scripts '-Recurse * .cmd | Select-Object -Property FullName

$ mylistoffiles

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