2013-08-28 3 views
18

私は最初のPowershell Scriptで作業しており、ループを解消することはできません。 私は倍の$ ActiveCampaigns数繰り返される、次いますループX回数

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 minutes 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 

これらのパラメータは、各ループに1つに増やす必要があります。

  • $PQCampaign1は(そして、$PQCampaign2なるべき3など)
  • $PQCampaignPath1$PQCampaignPath2、次に3などになるはず)

したがって、特定の日に$ActiveCampaignsが8に設定されている場合は、これを8回繰り返す必要があります。最後に$PQCampaign3を開く必要があります。$PQCampaignPath8です。

誰かが助けてくれますか?

答えて

20

はこれですあなたは何を探していますか?

+0

魅力のように動作します、ありがとう! – user2725402

+0

PowerShellの* anything *は簡単に理解できるように実装されているとは信じられません – Bowi

1

Seeこのリンクをクリックしてください。 PowerShellで変数を動的に作成する方法を示します。ここで

基本的な考え方です: 使っ新変数およびGet-変数

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

(提供されるリンクから考えると、私はコードのための信用を取ることはありません。)

+1

感謝。私はちょっと試してみるつもりですが、私はそれが私の問題を解決するとは思わない。私の変数はすでに存在しています、私はちょうど各ループで呼び出されている変数を変更したい... – user2725402

15

これは古い問題ですが、ここではPowerShellで任意の回数ループする簡単な方法があります。私は何か他のものを探すときにこの投稿に出くわしましたが、将来的に他の人を助けるかもしれません。これは上記のforループと同じですが、新しいプログラマーやスクリプターにとってははるかに理解しやすいです。それは範囲とforeachを使用します。

範囲= 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 
    } 
} 
55
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