У меня есть скрипт счетчика, который ожидает два параметра:
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
Я также пробовал start-sleep -s и результаты там же.
кстати, в чем разница между сном и "start-sleep -s"?