所以我正在使用
$list = Get-ChildItem $path -filter *xml
在给定路径上查找其中的所有xml文件。这似乎生成了一个FileSystemInfo类型对象的数组。
是否有一种以格式化和直接的方式枚举名称的最佳方法?当我开始使用
时,事情变得非常快$list | ft
就这样 - 因为我相信它将它们作为对象来处理。这是预期的。但不是我想要的。
对于我在这里处理的内容以及PS中以任意方式进行切割的最佳方式,您是否有任何高级指导 - 即人类可读。 foreach()循环是最好的主意吗?我觉得它会起作用但不理想。
答案 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