我正在尝试选择具有相同名称的文件,但扩展名为...
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调用?
答案 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