鉴于:
$path = c:\dir1\dir2\dir3\dir4\dir5
var.txt我想从最低的子目录( )开始搜索dir5。
如果var.txt存在,则执行某些操作,如果不存在,则搜索下一个级别(在本例中dir4为 )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)
试试这个(递归方法):
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 次 |
| 最近记录: |