如何让脚本重新开始

时间:2014-09-04 15:33:31

标签: powershell

如果文件被锁定,我需要循环这段代码。 我想要做的是如果文件被锁定,脚本将进入休眠状态10秒钟,然后返回到if(测试路径)并再次运行直到文件不再被锁定。 我只是不明白如何做到这一点,任何帮助表示赞赏。

if (Test-Path -Path "$path\*") 
{  
 # Code for directory not empty

# enumerate the items array
foreach ($item in $items)
{
  # if the item is NOT a directory, then process it.
 if ($item.Attributes -ne "Directory")
 {
       $filePath = $path+$item.name          
 }
    else  
    {
    }
        function isFileLocked([string]$LockedPath) 
        {

        $oFile = New-Object System.IO.FileInfo $LockedPath
        # Make sure the path is good
        if ((Test-Path -LiteralPath $LockedPath) -eq $false)
        {       
          #If file is locked go to sleep for 2 minutes and check again, loop until the file is no longer locked.
          Start-Sleep -s 10
          # Go back and check directory again to see if more files have come in

          #return $false

        }

1 个答案:

答案 0 :(得分:2)

如果希望它返回if语句,则需要使用while或do循环。如果您希望它跳到foreach循环中的下一个项目,您可以使用continue。帮助about_continue

编辑:示例:

Do {
Start-Sleep -s 10
}
Until (Test-Path $LockedPath)

#Script block executes as long as condition value = True
While (! (Test-Path $Lockedpath) )
{Sleep 10}

do do在逻辑上更容易使用,但第二个选项的好处是它在执行脚本块之前测试条件,在某些情况下(例如这个),它会更有效。