Jak policzyć rekurencyjnie wszystkie wiersze kodu w katalogu w systemie Windows?


21

Na komputerze z systemem Windows 7 chciałbym w szybki sposób określić liczbę wierszy we wszystkich plikach w drzewie katalogów dla plików o danym rozszerzeniu. Czy istnieje jakiś dobry sposób, aby to zrobić?


1
[Czy znasz podobny program do wc (uniksowe polecenie liczenia słów) w systemie Windows?] [1] [1]: stackoverflow.com/questions/247234/…

Znam wc, szkoda, że ​​nie było ekwiwalentu W7.
quillbreaker

@ (quillbreaker) Jest. Cały zestaw narzędzi wiersza poleceń systemu Linux / Unix jest dostępny dla WSZYSTKICH platform opartych na systemie Windows. gnuwin32.sourceforge.net
shawty

Odpowiedzi:


41

PowerShell jest opcją.

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

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

1
proszę przedstawić dowody i alternatywne rozwiązanie, jeśli powyższe jest nieprawidłowe. Następnie usunę / poprawię moją odpowiedź.
maweeras

2
Twoja odpowiedź jest pomocna i zaakceptowana przez PO, ale nie odpowiada poprawnie na pytanie PO. Problem tkwi w pierwszym poleceniu w twoim rozwiązaniu - dir -Recurse *.txtbędzie przetwarzał tylko katalogi, których nazwy pasują *.txt, jednocześnie wyprowadzając wszystkie pliki, które znajdzie w tych katalogach i ich poddrzewach. Ale OP chciał przetworzyć wszystkie katalogi, wyprowadzając tylko te pliki, które pasują *.txt. Aby to zrobić, użyłbyś dir -Recurse -Include *.txt.
Cinnam

1
Jest to niepoprawne, pomoc systemu Windows w Get-ChildItem(który dirjest aliasem) stwierdza, że Get-ChildItem –Path "*.txt" -Recurseto wszystko, co jest potrzebne, aby uzyskać „wszystkie pliki .txt w bieżącym katalogu i jego podkatalogach”. link: technet.microsoft.com/library/hh849800.aspx
Andrew Leap

@AndrewLeap Właśnie przetestowałem go ponownie - na Win8 z PowerShell 4.0 działa tak, jak mówisz. Jednak w Win7 z PowerShell 2.0 ma problem, który opisałem. dir -Recurse -Include *.txtwydaje się mieć pożądane wyniki w obu tych wersjach.
Cinnam,

W jaki sposób ktoś użyłby tego do sprawdzenia OBA * .txt ORAZ * .java (łączna suma)?
Jeremy Moritz

3

Aby rozwinąć odpowiedź maweeras powyżej (przepraszam za mało powtórzeń, aby skomentować), możesz wyszukać wiele rozszerzeń plików, przekazując tablicę rozdzielaną przecinkami do -Include.

Na przykład:

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


2

Następujące działa w cmd:

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

Lub w [.bat]:

for %%f in (*.TXT) do find /v /c "" "%%f"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.