Попробуйте использовать потоковый ридер и потоковый писатель. Это должно выполнить быстро.
$reader = [IO.File]::OpenText("C:\Users\Andy\Documents\input.txt")
$writer = New-Object System.IO.StreamWriter("C:\Users\Andy\Documents\output.txt")
$reader.ReadLine() > $null # Skip first line.
while ($reader.Peek() -ge 0) {
$writer.writeline($reader.ReadLine())
}
$reader.Close()
$writer.Close()
Я проверил, создав текстовый файл размером 300 МБ, и использовал его на нем. output.txt был создан за 3,5 секунды: -).
Обновление Я немного оптимизировал его, чтобы он не оценивал выражение на каждой итерации цикла. Теперь он завершается за 2,9 секунды :-)
Если вы не возражаете против раздувания памяти, вы также можете сделать это. Это еще быстрее, но занимает больше памяти, но меньше, чем Get-Content
.
$reader = [IO.File]::OpenText("C:\Users\Andy\Documents\input.txt")
$writer = New-Object System.IO.StreamWriter("C:\Users\Andy\Documents\output.txt")
$reader.ReadLine() > $null # Skip first line.
$writer.write($reader.ReadToEnd())
$reader.Close()
$writer.Close()