Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Quick and dirty powershell script for counting lines in each file of a folder
#Quick and dirty PS script for counting lines of code in a directory. Output is dumped to a simple CSV file.
#Note that this script doesn't count blank lines.
#Parameters:
# path - the path containing the code files (note that the script will recurse through subfolders
# outputFile - fully qualified path of the file to dump the CSV output
# include (Optional) - file mask(s) to include in the count (deafults to *.*)
# exclude (Optional) - file mask(s) to exclude in the count (defaults to none)
# Example (count lines in target path including *.cs but excluding *.designer.cs)
# .\countLOC.ps1 -path "C:\code\MyProject" -outputFile "C:\code\loc.csv" -include "*.cs" -exclude "*.designer.cs"
param([string]$path, [string]$outputFile, [string]$include = "*.*", [string]$exclude = "")
Clear-Host
Get-ChildItem -re -in $include -ex $exclude $path |
Foreach-Object { Write-Host "Counting $_.FullName"
$fileStats = Get-Content $_.FullName | Measure-Object -line
$linesInFile = $fileStats.Lines
"$_,$linesInFile" } | Out-File $outputFile -encoding "UTF8"
Write-Host "Complete"
@donzacharias

This comment has been minimized.

Show comment Hide comment
@donzacharias

donzacharias Oct 8, 2013

Thanks, this was just the thing I needed today! Worked great to count lines of logfiles. Gotta love PS...

Thanks, this was just the thing I needed today! Worked great to count lines of logfiles. Gotta love PS...

@petwolfe

This comment has been minimized.

Show comment Hide comment
@petwolfe

petwolfe Dec 21, 2015

Is there anyway to do this for data files which are zipped? (Unzip, count lines and zip it back)

Is there anyway to do this for data files which are zipped? (Unzip, count lines and zip it back)

@nanoseconds

This comment has been minimized.

Show comment Hide comment
@nanoseconds

nanoseconds Aug 18, 2016

You can also use this one liner (feel free to add -Recurse to include sub dirs or use -ex to exlcued a pattern). Note: this will give you total not by each file.
(Get-ChildItem -File | Get-Content | Measure-Object -line).Lines

You can also use this one liner (feel free to add -Recurse to include sub dirs or use -ex to exlcued a pattern). Note: this will give you total not by each file.
(Get-ChildItem -File | Get-Content | Measure-Object -line).Lines

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment