2013-12-11 2 views
1

Теперь я лучше пишу, краду и изменяю скрипты, но здесь я немного застрял. Мой сценарий суммирует файлы в определенной папке и подсчитывает их. Как это:powershell, write-host все имена файлов

{ 
function alljournals 
{ 
$colItems = (get-childitem "$targetfolder" -include *.xlsx* -recurse | measure-object -property length -sum) 
write-host "Collected all .xlsx files from all ImportJournal folders" -foregroundcolor "green" 
"Number of files: "+ $colItems.count + [Environment]::NewLine + "Size of all files "+"{0:N2}" -f ($colItems.sum/1MB) + " MB" 
} 
alljournals 
} 

Что самый умный способ перечислить все файлы из этой папки с помощью записи-хост? Я попытался поместить запись-хозяин $ colitems.Fullname без хороших результатов.

Я знаю, что я мог бы легко помещать файлы в цикл и использовать foreach и отображать имя файла. Но для этого я должен все изменить. Так есть способ?

Сейчас он показывает что-то вроде этого:

Collected all .xlsx files from all Importjournalfolders 
Number of files 15 
Size of all files: 13,3mb 

Что мне нужно до того, что выходной список всех файлов с пути

Любые идеи или советы?

ответ

3

Вы можете захватить список файлов в первом конвейере, используя tee-объект, а затем использовать foreach.

$colItems = (get-childitem "$targetfolder" -include *.xlsx* -recurse | tee-object -variable files | measure-object -property length -sum) 
$files | foreach-object {write-host $_.FullName} 
+0

вот что я хотел, чтобы мой друг :) Спасибо! – RayofCommand

+1

BTW, я никогда не использовал tee-объект, кроме как объяснить, как использовать его для других. –

+0

он работает фантастический, я бы поднял больше, если бы мог – RayofCommand

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