簡體   English   中英

循環 X 次

[英]Loop X number of times

我正在編寫我的第一個 PowerShell 腳本,但無法弄清楚循環。

我有以下內容,它將重復$ActiveCampaigns次數:

Write-Host "Creating $PQCampaign1 Pre-Qualified Report"
Invoke-Item "$PQCampaignPath1\PQ REPORT $PQCampaign1.qvw"
Write-Host "Waiting 1 minute for QlikView to update"
sleep -seconds 60 # Wait 1 minute for QlikView to Reload, create Report and Save.

DO{
    Write-Host "Daily Qlikview Reports"
    Write-Host "Wating for QlikView to create the $PQCampaign1 PQ Report"
    Get-Date
    Write-Host "Checking...."
    sleep -seconds 1
    Write-Host ""
    Write-Host "Not Done Yet"
    Write-Host "Will try again in 5 seconds."
    Write-Host ""
    sleep -seconds 5
}

Until (Test-Path "$PQCampaignPath1\$PQCampaign1 $PQReportName $ReportDate.xlsx" -pathType leaf)

Get-Date
Write-Host "Done with $PQCampaign1 PQ Report. Wait 10 seconds."
sleep -seconds 10

這些參數需要為每個循環增加一個:

  • $PQCampaign1 (應該變成$PQCampaign2 ,然后是 3 等等)
  • $PQCampaignPath1 (應該變成$PQCampaignPath2 ,然后是 3 等等)

因此,如果某天$ActiveCampaigns設置為 8,則需要重復 8 次,最后一次必須打開位於 $ $PQCampaign3中的$PQCampaignPath8

我怎樣才能解決這個問題?

使用:

1..10 | % { write "loop $_" }

輸出:

PS D:\temp> 1..10 | % { write "loop $_" }
loop 1
loop 2
loop 3
loop 4
loop 5
loop 6
loop 7
loop 8
loop 9
loop 10

這可能是您正在尋找的:

for ($i=1; $i -le $ActiveCampaigns; $i++)
{
  $PQCampaign     = Get-Variable -Name "PQCampaign$i"     -ValueOnly
  $PQCampaignPath = Get-Variable -Name "PQCampaignPath$i" -ValueOnly

  # Do stuff with $PQCampaign and $PQCampaignPath
}

這是在PowerShell中循環任意次數的簡單方法。

它與上面的for循環相同,但對於較新的程序員和腳本編寫者來說更容易理解。 它使用范圍和foreach。 范圍定義為:

range = lower..upper

要么

$range = 1..10

范圍也可以直接在for循環中使用,盡管不是最優的方法,但是任何性能損失或額外的處理指令都是不明顯的。 解決方案如下:

foreach($i in 1..10){
    Write-Host $i
}

或者在你的情況下:

$ActiveCampaigns = 10
foreach($i in 1..$ActiveCampaigns)
{
    Write-Host $i
    If($i==$ActiveCampaigns){
        // Do your stuff on the last iteration here
    }
}

看到這個鏈接 它向您展示了如何在PowerShell中動態創建變量。

這是基本的想法:

使用New-VariableGet-Variable

for ($i=1; $i -le 5; $i++)
{
    New-Variable -Name "var$i" -Value $i
    Get-Variable -Name "var$i" -ValueOnly
}

(它取自提供的鏈接,我不承認代碼。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM