Do..Until on a never ending loop

时间:2015-10-27 23:21:09

标签: loops powershell

我写了Do..Until语句来检查文件是否存在。如果文件不存在,则等待几秒钟再次检查。

应该在文件出现时结束。我已经通过运行没有文件的脚本进行测试,然后在脚本运行时将其添加到文件夹中。

而不是结束,它继续无休止地循环。谁能看到我错过的东西?

$path = test-path "C:\Temp\test.txt"
do {    
    if (!($path)) {
        Write-Host "Not here yet..."
        Start-Sleep -s 3
    }
} until($path)

Write-Host "Files here now"
Write-Host "Press any key to continue ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

2 个答案:

答案 0 :(得分:2)

{<1}}语句在行

中进行评估
Test-Path

之后变量$path = Test-Path "C:\Temp\test.txt" 包含评估的布尔结果。在您的条件下进行实际检查:

$path

或将其定义为您在条件中调用的函数:

$path = "C:\Temp\test.txt"
do { 
    if (-not (Test-Path $path)) {
        Write-Host "Not here yet..."
        Start-Sleep -s 3
    }
} until (Test-Path $path)

答案 1 :(得分:1)

好的,在发布此消息后3分钟(以及挫折之前一小时!)发现它。)

我需要将变量INSIDE放在Do..Until语句中。像这样:

do{ 
    $path = test-path "C:\Temp\test.txt"
    if (!($path))   
        {Write-Host "Not here yet..."
        start-sleep -s 3}       
    }
until($path)
    Write-Host "Files here now"
    Write-Host "Press any key to continue ..."
    $x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")