Почему этот фрагмент PowerShell дает дополнительные пустые строки? - PullRequest
5 голосов
/ 03 апреля 2012

Эта команда создаст 1 дополнительную строку вверху и еще 3 внизу.

Get-Process | select Name  | ft -HideTableHeaders | Out-File .\process.txt

То же самое происходит с другими списками, такими как чтение каталога.

Ответы [ 3 ]

3 голосов
/ 03 апреля 2012

Тот же результат, что и в предыдущем ответе, но в другом синтаксисе:

Get-Process | foreach{ $_.Name}  > .\process.txt

В конце все еще есть пустая строка, хотя

2 голосов
/ 10 июля 2015

Вы можете превратить его в строку и обрезать:

(Get-Process | select Name  | ft -HideTableHeaders | Out-String).Trim() | Out-File .\process.txt

Вместо трех теперь есть только одна пустая строка в конце.

1 голос
/ 03 апреля 2012

Я думаю, что строки empy связаны с выводом таблицы форматов, а out-file помещает разделители строк между строками, но я не уверен.

Чтобы избежать этого, вы можете сделать что-то подобное, есливам нужен только список имен в файле:

Get-Process |  % { if ( $_ -ne $null ) { $_.name } } | Out-File .\process.txt

Будет полезно, если у Out-File был переключатель -SuppressLastEmptyLine, чтобы избежать этой последней пустой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...