Пожалуйста, Боже, прости меня:
@echo off
set sum=0
for /r %%f in (*.cs) do find /v /c "$$some nonsense string$$" %%f >> test.dat
for /f "tokens=3 delims=:" %%i in (test.dat) do set /a sum += %%i
echo total lines = %sum%
del test.dat
Это не C #, но это весело.
РЕДАКТИРОВАТЬ: Это может быть более эффективным с точки зрения памяти, так как он не использует ReadAllLines
, но по одному:
string basePath = @"C:\some\path";
Console.WriteLine(
Directory.GetFiles(basePath, "*.cs", SearchOption.AllDirectories)
.Sum(file =>
{
int lines = 0;
using (StreamReader reader = new StreamReader(file))
while(reader.ReadLine() != null) lines++;
return lines;
}));