2017-10-12 78 views
1

我在我的腳本中有一行下載大型視頻文件。下載開始後,我想在下載的同時打開文件。問題是,下載命令是否尚未完成,因此腳本停留在同一行上。Powershell:如何在永無止境的腳本行後繼續運行腳本?

(Download-File command) 

$allFiles = Get-ChildItem | Select-Object -Property name,LastAccessTime | measure-object -Property LastAccessTime -Maximum 
$videoFile = Get-ChildItem | Where-Object { $_.LastAccessTime -eq $allFiles.Maximum} 
Start-Process $videoFile 

(我想這是在一個循環中下載文件命令運行時運行)

回答

1

這應該很容易。所有你需要做的就是讓它在不同的線程上運行。使用後臺作業或運行空間。下面的例子是後臺作業。

$ScriptBlock = {(Download-File command)} 
Start-Job -ScriptBlock $ScriptBlock 

do 
{ 
    $allFiles = Get-ChildItem | Select-Object -Property name,LastAccessTime | measure-object -Property LastAccessTime -Maximum 
    $videoFile = Get-ChildItem | Where-Object { $_.LastAccessTime -eq $allFiles.Maximum} 
    Start-Process $videoFile 
} 
while (1 -gt 0) 

雖然,我不確定是否要在循環中打開視頻文件。如果它確實支持打開不完整的視頻文件,那麼您將擁有同樣多的實例。最好將它放在if (!(Get-Process -name $VideoFile)){}循環中以防止出現這種情況。

+0

謝謝!我是一名初學者,這對我很有幫助 –

0

使用.waitforexit方法。

例子:

$proc = Start-Process cmd.exe -PassThru 
$proc.WaitForExit() 

$proc.WaitForExit()線後,您可以打開您的文件。

它看起來比循環好多了