我正在研究我的第一个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
Run Code Online (Sandbox Code Playgroud)
每个循环需要增加一个参数:
$PQCampaign1 (应成为$PQCampaign2,然后3,等)$PQCampaignPath1 (应成为$PQCampaignPath2,然后3,等)因此,如果$ActiveCampaigns在某一天设置为8,那么这需要重复8次,并且最后一次必须打开$PQCampaign3它$PQCampaignPath8.
我怎样才能解决这个问题?
cmc*_*nty 93
使用:
1..10 | % { write "loop $_" }
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)
小智 32
这可能是您正在寻找的:
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
}
Run Code Online (Sandbox Code Playgroud)
小智 23
这是在PowerShell中循环任意次数的简单方法.
它与for上面的循环相同,但对于较新的程序员和脚本编写者来说更容易理解.它使用范围和foreach.范围定义为:
range = lower..upper
Run Code Online (Sandbox Code Playgroud)
要么
$range = 1..10
Run Code Online (Sandbox Code Playgroud)
范围也可以直接在for循环中使用,虽然不是最佳方法,但任何性能损失或额外的处理指令都是不明显的.解决方案如下:
foreach($i in 1..10){
Write-Host $i
}
Run Code Online (Sandbox Code Playgroud)
或者在你的情况下:
$ActiveCampaigns = 10
foreach($i in 1..$ActiveCampaigns)
{
Write-Host $i
If($i==$ActiveCampaigns){
// Do your stuff on the last iteration here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88321 次 |
| 最近记录: |