搜索目录中的文件,如果找不到则迭代父目录

meu*_*eue 3 powershell

鉴于:

$path = c:\dir1\dir2\dir3\dir4\dir5

var.txt我想从最低的子目录( )开始搜索dir5

如果var.txt存在,则执行某些操作,如果不存在,则搜索下一个级别(在本例中dir4为 )var.txt并重复。

可能相关的链接:

我如何使用 test-path 来检查 var.txt

也许是递归?

想法:

Split-Path以某种方式在迭代的循环中使用-Parent, 并使用test-path每次迭代来检查var.txt


解决方案:

将下面的解决方案与操作结合起来,如果在最高目录中找不到则打破循环:

$file = ""
$path = ""
while($path -and !(Test-Path (Join-Path $path $file))){
    if($path -eq ((Split-Path -Path $path -Qualifier)+"\")){
        break
    }
    else {
        $path = Split-Path $path -Parent
    }
}
if($path -ne ((Split-Path -Path $path -Qualifier)+"\")){
    #do something
}
Run Code Online (Sandbox Code Playgroud)

Esp*_*o57 5

试试这个(递归方法):

function GetPathIfFileExist($pathtosearch, $filename)
{
   if($pathtosearch -eq "")
   {
       "file not founded"
   }
   elseif (Test-Path "$pathtosearch\$filename" )
   {
       $pathtosearch
   }
   else
   {
      GetPathIfFileExist (Split-Path $pathtosearch) $filename
   }
}

GetPathIfFileExist "c:\dir1\dir2\dir3\dir4\dir5" "var.txt"
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

1205 次

最近记录:

8 年,5 月 前