我有一个zip文件中的3个文件的列表。作为一个例子,它们被命名为file1.txt, file2.txt, file3.txt
。
然后,我有一个在后台运行的进程,它会自动将它们提取到一个已经包含其他文件的文件夹中。
我想运行一个启动该进程的脚本(我可以做到这一点),然后等待这三个文件在继续操作之前出现在目录中。我尝试过do
和while
循环的不同组合,但每次循环的结果都是在文件实际出现之前出现true
。如果标签还不够提示,这是一个PowerShell脚本。
这是我目前得到的,虽然它会自动进入休息:
do {
$result = (Get-ChildItem -Path "$path\*" -Recurse -Include $emvfiles, $pefiles -Verbose -ErrorAction SilentlyContinue | Test-Path) -notcontains $false
if ($result) {
Write-Host "All files extracted. Continuing..."
break
}
} while ($true)
字符串
有什么想法吗?
1条答案
按热度按时间1zmg4dgp1#
问题是
do-while
循环中的条件总是计算为true
,因为Test-Path
小程序返回一个布尔值,而-notcontains
运算符没有正确使用。因此,要解决这个问题,请使用Get-ChildItem
获取目录中的文件并过滤所需的特定文件名。然后检查提取文件的计数是否等于3,这表明所有三个文件都存在。如果是这样,则跳出循环。字符串
Start-Sleep -Seconds 1
:等待1秒钟,然后再次检查。