【发布时间】:2018-06-21 22:25:56
【问题描述】:
我需要检查 c:\pdf 中是否存在某些 pdf,如果存在则继续执行,如果不存在,则每 15 秒再检查一次。
我的实际代码只是检查文件夹中的文件并打印是否有东西,如果不是一次又一次地重复。我的问题是,有时我的代码会在打印之前删除项目,这就是为什么我想循环检查文件并仅在文件存在时继续执行我的代码。
我的代码:
Do {
$fileDirectory = "C:\pdf";
foreach($file in Get-ChildItem $fileDirectory)
{
$filePath = $fileDirectory + "\" + $file;
Start-Process –FilePath $filePath –Verb Print -WindowStyle Minimized -PassThru
}
Start-Sleep -s 2
Remove-Item c:\pdf\* -recurse
Get-Process AcroRd32 | % { $_.CloseMainWindow() }
sleep 15
} while ($true)
【问题讨论】:
-
您不应该在删除之前处理所有文件,在此期间可以添加更多文件,您应该一次处理并删除它们,以帮助减少这种竞争条件导致您丢失未处理的文件。
-
我删除了标签
pdf,因为您的问题不是关于 PDF 文件。您可以对任何其他文件扩展名提出同样的问题。
标签: file powershell loops exists