我试图确定指定根目录下的目录是否包含与特定模式匹配的文件,在我的情况下是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调用中返回的项目
有人可以指出我正确的方向吗?
答案 0 :(得分:0)
看起来你可能过于复杂了。
要完成Get-ChildItem C:\myfolder\RT*.dcm
对整个$homeDir
所做的事情(我相信你正在尝试做的事情),你可以使用一个Get-ChildItem
命令:
Get-ChildItem $homeDir -Recurse | Where-Object{$_.Name -like "RT*.dcm"}
以递归方式搜索您正在寻找的所有.dcm文件的整个$homeDir
并返回它们。