在PowerShell中选择多种文件类型。版本2

时间:2014-02-14 16:45:22

标签: powershell

我正在尝试选择具有相同名称的文件,但扩展名为...

IE:

idiotCode.dll, idiotCode.pdb, idiotCode.xml, StupidFool.dll, StupidFool.pdb, StupidFool.xml

等等。

在下面的脚本行中看看我的where-Object调用......

gci -path $FromPath | ? {$_.Name -match "idiotCode|StupidFool|YourAnIdiot|TheSuckIstHeMatterWhichU" -and $_.Name -like "*.dll"} | foreach{write-host("Do I have the files here? : "+ $_.Fullname + " -destination" + $ToPath) }

我可以使用like参数吗?还有另一种方法吗?也许在我的get-childItem方法调用中有什么东西可以管道进入我的Where-Object调用?

2 个答案:

答案 0 :(得分:0)

只有Get-ChildItem Cmdlet可以做很多事情。如果您查看帮助Get-ChildItem,可以在那里进行大量过滤。特别是使用过滤器-Filter-Include-Exclude

例如:

Get-ChildItem -Path $FromPath -Include "idiotCode.*","StupidFool.*","YourAnIdiot.*","TheSuckIstHeMatterWhichU.*" -Filter "*.dll"

答案 1 :(得分:0)

好的,我对这里的整个概念感到有点困惑,因为你说你想要选择多个同名但不同扩展名的文件。然后你拉出PathA的目录列表,过滤除了一种“已批准的名称列表”中的文件以外的所有内容,并且只允许.DLL文件显示,然后引用PathB,原因不明。
我在这里猜测,但我想你想从PathA查询.DLL文件,然后检查来自PathB的匹配文件。

$Reference = (GCI $FromPath -Filter "*.DLL").basename
GCI $ToPath|?{$_.BaseName -Match $Reference}|FT -Group BaseName