如果文件被锁定,我需要循环这段代码。 我想要做的是如果文件被锁定,脚本将进入休眠状态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
}
答案 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在逻辑上更容易使用,但第二个选项的好处是它在执行脚本块之前测试条件,在某些情况下(例如这个),它会更有效。