Bagaimana cara menghitung semua baris kode dalam direktori secara rekursif pada Windows?


21

Pada mesin Windows 7, saya ingin cara cepat untuk menentukan jumlah baris di semua file di pohon direktori, untuk file dari ekstensi yang diberikan. Apakah ada cara baik di luar kotak untuk melakukan ini?


1
[Apakah Anda tahu program serupa untuk wc (unix word count command) di Windows?] [1] [1]: stackoverflow.com/questions/247234/…

Saya kenal dengan wc, saya berharap ada W7 yang sama.
quillbreaker

@ (quillbreaker) Ada. Seluruh baris perintah Linux / Unix tersedia untuk SEMUA platform berbasis windows. gnuwin32.sourceforge.net
shawty

Jawaban:


41

PowerShell adalah sebuah opsi.

PS D:\Scratch\maweeras\superuser> dir -Recurse *.txt | Get-Content | Measure-Object -Line

Lines Words Characters Property
----- ----- ---------- --------
  168

1
berikan bukti dan solusi alternatif jika di atas salah. Saya kemudian akan menghapus / memperbaiki jawaban saya.
maweeras

2
Meskipun jawaban Anda bermanfaat dan diterima oleh OP, itu tidak menjawab pertanyaan OP dengan benar. Masalahnya ada pada perintah pertama dalam solusi Anda - dir -Recurse *.txthanya akan memproses direktori yang namanya cocok *.txt, sambil mengeluarkan semua file yang ditemukan di direktori tersebut dan subpohonnya. Tetapi OP ingin memproses semua direktori sembari hanya menghasilkan file yang cocok *.txt. Untuk melakukan itu, Anda akan menggunakan dir -Recurse -Include *.txt.
Cinnam

1
Ini tidak benar, bantuan windows pada Get-ChildItem(yang dirmerupakan alias dari) menyatakan bahwa Get-ChildItem –Path "*.txt" -Recursehanya itu yang diperlukan untuk mendapatkan "semua file .txt di direktori saat ini dan subdirektori." tautan: technet.microsoft.com/library/hh849800.aspx
Andrew Leap

@AndrewLeap Saya baru saja mengujinya lagi - pada Win8 dengan PowerShell 4.0 berfungsi seperti yang Anda katakan. Namun pada Win7 dengan PowerShell 2.0 memiliki masalah yang saya jelaskan. dir -Recurse -Include *.txttampaknya memiliki hasil yang diinginkan pada kedua versi ini.
Cinnam

Bagaimana seseorang menggunakan ini untuk memeriksa KEDUA * .txt DAN * .java (total gabungan)?
Jeremy Moritz

3

Untuk memperluas jawaban maweeras di atas (maaf tidak cukup perwakilan untuk berkomentar), Anda dapat mencari beberapa ekstensi file dengan meneruskan array yang dibatasi koma ke -Include.

Jadi misalnya:

dir -Recurse -Include *.ts,*.tsx -Exclude *node_modules* | Get-Content | Measure-Object -Line


2

Berikut ini berfungsi dalam cmd:

for %f in (*.TXT) do find /v /c "" "%f"

Atau di [.bat]:

for %%f in (*.TXT) do find /v /c "" "%%f"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.