【发布时间】:2020-12-22 21:31:29
【问题描述】:
我有两个从同一个文件读取的进程。我想确保这两个进程不会同时运行。我的方法是,当一个进程启动时,它应该寻找一个文件(process.txt)。如果文件不存在,它会创建文件并继续执行,从两个进程之间的共享文件(sharedfile.txt)中读取。然后它在执行后删除 process.txt 文件。
由于两个进程在执行后都会删除process.txt文件,如果该文件存在,它应该进入启动睡眠,直到另一个进程完成并删除该文件。
这里的问题是当一个进程完成并删除文件(process.txt)时,即使没有文件存在,另一个仍然停留在循环中而不执行。我不确定要使用的正确循环。我尝试了其中的几个,但无法实现我的目标。
Clear Host
$sleeptime = 15
$lockfile = "C:\Users\processid.txt"
$file = test-path -Path $lockfile
Try
{
if($file -eq 'True')
{
echo “Lock file found!”
echo "This means file is being used by another process"
echo "Wait for file to be deleted/released"
echo “Sleeping for $sleeptime seconds”
Start-Sleep $sleeptime -Verbose
}
else
{
New-item -Path $lockfile
#Executing a code here
}
Remove-Item $lockfile –Force
}
}
Catch
{
Write-Host $_.Exception.Message`n
}
【问题讨论】:
标签: windows powershell automation