2013-12-23 2 views
3

Мне нужно отформатировать, добавить текст в список файлов, которые я получаю с помощью Powershell. Я могу просто использовать следующий скрипт, чтобы получить мой список файлов:Добавление текста в список вывода

Get-ChildItem("c:\path") | where {$_.Length -eq 0} | select name 

Это хорошо работает, возвращает список имен файлов:

FILE1.TXT
file2.txt
file2.txt

то, что я пытаюсь сделать, это добавить дополнительный текст к выходу, так это выглядит примерно так:

'file1.txt',
'file2.txt',
'file3.txt',

Это я нахожу, чтобы быть более трудным, чем это должно быть. Я попытался это:

$l = Get-ChildItem("c:\path") | where {$_.Length -eq 0} | select name | foreach($_) { "'$_,"} 

Это не совсем то, что, как следует из названия поля добавляется к выходу:

'@ {Name = file1.txt} .Name',
@ {Name = file2.txt} .Name ',
@ {Name = file3.txt} .Name',

есть ли способ форматирования это лучше или удалить информацию об объекте?

ответ

3

Вы очень близки. Используйте параметр -expandproperty для select-object, чтобы получить свойство как простой массив строк.

$l = Get-ChildItem("c:\path") | 
    where {$_.Length -eq 0} | 
    select -expandproperty name | foreach($_) { "'$_,"} 
+0

Я выбрал этот метод, поскольку он обеспечивает наибольший контроль над полями, которые вы можете выбрать. – Brettski

1

Попробуйте

$l = Get-ChildItem("D:\Test") | where { $_.Length -eq 0 } | %{"'$_',"} 
+0

Странно, это работает. Почему $ _ в последней части возвращает только имя, а не все поля? Я бы предположил, что он все еще содержит все, или он только возвращает первое поле? – Brettski

+0

Что делает%? например % {"'$ _',"} – Brettski

+1

% является псевдонимом для командлета foreach –

0
$l = Get-ChildItem("c:\path") | where {$_.Length -eq 0} | select $_.Name | foreach { "'$_'," } 
1

Если у вас есть V3 или лучше вы можете сделать это следующим образом:

@((Get-ChildItem c:\path | where Length -eq 0).name) -match '\S'| foreach { "'$_'," } 
+0

Проблема с этим заключается в том, что '', возвращается, если нет возвращенных файлов. – Brettski

+0

Обновлено. Посмотрите, работает ли это лучше. – mjolinor

+0

Да, это лучше. – Brettski

Смежные вопросы