我有一个计数器脚本需要两个参数:
1) 计数器启动前等待的秒数。
2) 计数器持续时间(以秒为单位)。
例如,如果我输入 3,10
我希望 3 秒后计时器将从 10 倒计时到 0 并每秒将其写入输出。
这是我的脚本:
$timeBeforeStart = $args[0]
$waitSeconds = $args[1]
$startTime = get-date
$endTime = $startTime.addSeconds($waitSeconds)
$timeSpan = new-timespan $startTime $endTime
start-sleep -s $timeBeforeStart
while ($timeSpan -gt 0)
{
$timeSpan = new-timespan $(get-date) $endTime
write-host $([string]::Format("`rTime Remaining: {0:d2}:{1:d2}:{2:d2}",
$timeSpan.hours, $timeSpan.minutes, $timeSpan.seconds))
sleep 1
}
不幸的是它不起作用,睡眠似乎与计数器同时工作,而不是延迟计数器。
PS C:\> c:\555.ps1 3 10
Time Remaining: 00:00:07
Time Remaining: 00:00:05
Time Remaining: 00:00:04
Time Remaining: 00:00:03
Time Remaining: 00:00:02
Time Remaining: 00:00:01
Time Remaining: 00:00:00
Time Remaining: 00:00:00
我也尝试过开始睡眠-s结果是一样的。
顺便问一下, sleep 和“start-sleep -s”有什么区别?
试试这个方法:
$timeBeforeStart = 0
$waitSeconds = 60
Start-Sleep -Seconds $timeBeforeStart
$waitSeconds..0 | Foreach-Object {
Write-Host "`r Time Remaining: $_ " -NoNewline -foregroundcolor green
Start-Sleep -Seconds 1
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)