处理FileSystemInfo数组的输出

时间:2015-12-30 15:41:13

标签: xml powershell

所以我正在使用

$list = Get-ChildItem $path -filter *xml

在给定路径上查找其中的所有xml文件。这似乎生成了一个FileSystemInfo类型对象的数组。

是否有一种以格式化和直接的方式枚举名称的最佳方法?当我开始使用

时,事情变得非常快
$list | ft

就这样 - 因为我相信它将它们作为对象来处理。这是预期的。但不是我想要的。

对于我在这里处理的内容以及PS中以任意方式进行切割的最佳方式,您是否有任何高级指导 - 即人类可读。 foreach()循环是最好的主意吗?我觉得它会起作用但不理想。

1 个答案:

答案 0 :(得分:0)

这听起来好像你要求Select-Object

  

选择对象或对象集的指定属性。

您提到您正在寻找一种枚举名称的人类可读方法吗?

sodawillow类似,您可以只提取一个属性以获取名称数组

在PowerShell V2中。 需要小心,因为您将匹配以xml结尾的文件夹。

Get-ChildItem $path -filter *xml | Select-Object -ExpandProperty Name

在PowerShell V3 +中

(Get-ChildItem $path -Filter *xml -File).Name

但那只会让你获得字符串。你是如何处理它们的?一个简单的foreach将是最简单的全面方法。

(Get-ChildItem $path -Filter *xml -File).Name | ForEach-Object{"The file name is $_"}

但是,如果您正在执行其他操作,例如移动文件,则会有直接处理Get-ChildItem输出的cmdlet,而无需显式循环。

Get-ChildItem $path -Filter *xml -File | Move-File -Destination "C:\temp"

这是因为按Move-Item和许多其他cmdlet可以执行的属性名匹配参数。

  

-Path指定项目当前位置的路径。默认值是当前目录。允许使用通配符。

Aliases                        none 
Required?                      true 
Position?                      1 
Default Value                  none 
Accept Pipeline Input?         true (ByValue, ByPropertyName) 
Accept Wildcard Characters?    false