Powershell通配符返回项目

时间:2014-10-17 09:20:45

标签: powershell-v2.0

我试图确定指定根目录下的目录是否包含与特定模式匹配的文件,在我的情况下是RT * .dcm。

我正在使用Powershell 2.0,我首先使用

获取指定根目录下的所有子目录
$dirList = Get-ChildItem $homeDir -recurse | where {$_.Attributes -eq 'Directory'} | Select-Object FullName

然后我遍历这些以查看它们是否包含* .dcm文件(可能还有更好的方法吗?)

# Find files with a "dcm" extension.
$fileList = Get-ChildItem $dir.fullname | where {$_.extension -eq ".dcm"} | Select-Object FullName 

# Look for directories that contain *.dcm files
if ($fileList.Count -gt 0)  {
    [Console]::WriteLine("Dicom directory: " + $dir.fullname)       
    $dicomDirList += $dir
}

以上两节工作正常

然后我使用

搜索找到的目录
foreach($dir in $dicomDirList) {

    $rtFileList = Get-ChildItem $dir | where {$_.name -like "RT*.dcm"} | Select-Object FullName

    foreach($file in $rtFileList) {
        [Console]::WriteLine("RT likey file: " + $file.fullname) 
    }   
}

然而,这并没有找到我知道的文件吗?

如果我使用

Get-ChildItem C:\myfolder\RT*.dcm

这有效,但我无法弄清楚如何使用之前Get-ChildItem调用中返回的项目

有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

看起来你可能过于复杂了。

要完成Get-ChildItem C:\myfolder\RT*.dcm对整个$homeDir所做的事情(我相信你正在尝试做的事情),你可以使用一个Get-ChildItem命令:

Get-ChildItem $homeDir -Recurse | Where-Object{$_.Name -like "RT*.dcm"}

以递归方式搜索您正在寻找的所有.dcm文件的整个$homeDir并返回它们。