2009-07-31 2 views
1

Как я могу заставить Powershell выводить файл IDENTICAL в файл, созданный следующей командой? .Powershell 2.0 out-file formatting nightmare

реж/с/б/а-d *> C: \ files.txt

должен быть легким, правильно !!

EDIT: Я нашел, что ps сокращал выход на основе ширины буфера экрана. Исправьте это с помощью таблицы формата и проложите пробелы ... попробуйте формат-список, и вы получите заголовки свойств ... вы получите эту идею.

ответ

1

Существует множество способов записи информации в файл. Одним из них является Set-Content, который не имеет проблемы с шириной. Кроме того, преобразование объекта FileInfo в строку приводит к полному имени.

dir * -r | ?{!$_.PSIsCcontainer} | Set-Content C:\files.txt 

Причина у вас есть проблемы с Out-File является то, что все амбулаторными * командлеты использовать автоматические взгляды форматирования. Эти представления создаются с учетом консоли.

2

Это должно быть точно? Зачем? Как говорится, если вы разбираете строки в Powershell, вы, вероятно, делаете что-то неправильно ... в любом случае ...

1) Просто позвоните в cmd.exe.

PS> cmd /c "dir /s /b /a-d *.* > c:\files.txt" 

2) Я считаю, что вы можете получить те же результаты от родной Powershell. Но я не могу нести ответственность за тестирование каждого край случая с символическими NTFS, скрытыми файлами и т.д.

PS> gci -r | ?{ !$_.psiscontainer } | %{ $_.fullname } | out-file c:\files.txt 

лично я ненавижу тот факт, вы не можете использовать «выбрать», чтобы получить свойство FullName без странных побочных эффектов на командлетах вниз по потоку. Если бессмысленность цикла foreach беспокоит вас так же сильно, как и я, используйте Get-PropertyValue от PSCX или Linq-Select от Josh Einstein.

+0

Да, это должно быть точно, поскольку оно было введено для какого-либо другого инструмента. out-file обрезает до ширины буфера экрана – 2009-08-03 01:02:57

+0

Интересно. Есть ли проблема с перенаправлением native>? –