2009-02-18 21 views
24

Tôi đang cố gắng tìm cách đếm tổng số dòng trong tất cả các tệp nguồn của dự án tôi có. Tôi đã thử đường ống dir -r -name vào measure-object -line, nhưng điều đó chỉ đếm số lượng tệp tôi có.Tìm số dòng trong dự án có powershell

Có ai có tập lệnh để thực hiện việc này không?

Trả lời

9

Nhờ mọi người đã trả lời. Con đường tôi đã kết thúc thực hiện điều này là

dir . -filter "*.cs" -Recurse -name | foreach{(GC $_).Count} | measure-object -sum 
+0

Nó dường như không hoạt động ... –

+0

dir. -filter "* .cs" -Recurse | foreach {(gc $ _). Count} | measure-object -sum –

+0

Cố định để hoạt động. Tôi nên chỉ ra rằng bạn dường như không hoạt động. –

5

dir **. Txt -recurse | chọn Họ và tên, @ {name = "LineCount"; biểu hiện = {@ (get-nội dung $ fullname _.) .count}}

+0

Điều này lệnh không hoạt động đối với tôi. Tôi nhận được một số "Select-Object: Không thể ràng buộc đối số tham số 'Path' vì nó là null." lỗi. – aphoria

+0

Tôi đang bỏ phiếu cho bạn bởi vì tôi không biết về lệnh chọn, và tôi là loại nói về nó. Tuy nhiên, bạn đã sử dụng '$ __' thay vì '$ _', bạn đã sử dụng' dir * .txt' thay vì 'dir -filter" * .txt "' và kết quả của bạn vẫn khiến tôi thêm mọi thứ khi Tôi đa xong. –

+0

Xin lỗi vì điều đó, biên tập viên đã không hiển thị $ _ vì vậy tôi đã tăng gấp đôi nó, cảm ơn bạn đã bình chọn! –

7
Get-ChildItem . -Include *.txt -Recurse | foreach {(Get-Content $_).Count} 

đặc xuống một chút với bí danh:

GCI . -Include *.txt -Recurse | foreach{(GC $_).Count} 

Will cho kết quả tương tự như sau:

Lines Words    Characters    Property 
----- -----    ----------    -------- 
    21 
    40 
    29 
    15 
    294 
    13 
    13 
    107 

EDIT: Đã sửa đổi để recurse thông qua các thư mục con.

CHỈNH SỬA 2: Đã xóa sử dụng Đo đối tượng.

25
Get-ChildItem -Filter "*.cs" -Recurse | Get-Content | Measure-Object -line 
+0

Get-ChildItem * .cs -Recurse sẽ recurse thư mục, nhưng (trong powershell Ít nhất 1.0) sẽ chỉ hiển thị các tệp kết thúc bằng .cs trong thư mục hiện tại. –

+0

Cảm ơn! Có, vì trong trường hợp này, * .cs khớp với 'đường dẫn', thay vì tham số 'bộ lọc'. Để khắc phục, bạn có thể viết: Get-ChildItem. * .cs -Đảm bảo… hoặc Get-ChildItem -Filter "* .cs" -Hãy chấp nhận… – Alex

1

Tôi chỉ expiremented một chút và thấy rằng lệnh này không thực sự đo lường tất cả C# file đệ quy:

Get-ChildItem -Filter *.cs -Recurse | Get-Content | Measure-Object -Word -Line -Character

0

Prints tên tập tin và số lượng dòng:

Get-ChildItem -re -in "*.cs" | 
Foreach-Object { 
    $fileStats = Get-Content $_.FullName | Measure-Object -line 
    $linesInFile = $fileStats.Lines 
    Write-Host "$_=$linesInFile" 
} 
Các vấn đề liên quan