Я пытаюсь запустить скрипт, который ведет обратный отсчет с 60:00, где 60 — количество секунд, а 00 — количество миллисекунд. Я вообще не могу заставить скрипт нормально работать. Кто-нибудь знает, в чем проблема?
:PhaseTwo
Set /a bignum=60
Set smallnum=00
Set /a handlevariable=1
Set /a bignumhandle=0
ping localhost -n 2 >nul
:StopWatchRoutine
If %bignum% EQU 00 GoTo :StopWatchEndCheck
:StopWatchEndCheckNo
If %bignum% EQU 9 set /a bignumhandle=1
If %smallnum% EQU 9 set /a handlevariable=1
If %handlevariable% EQU 1 GoTo :NumberMods
Set /a smallnum-=1
GoTo :StopWatchHandle
:StopWatchEndCheck
If %smallnum% EQU 01 GoTo :StopWatchExit
GoTo :StopWatchEndCheckNo
:NumberMods
If %smallnum% EQU 00 set /a smallnum=99
If %smallnum% EQU 00 set /a handlevariable=0
If %smallnum% EQU 01 set smallnum=00
If %smallnum% EQU 02 set smallnum=01
If %smallnum% EQU 03 set smallnum=02
If %smallnum% EQU 04 set smallnum=03
If %smallnum% EQU 05 set smallnum=04
If %smallnum% EQU 06 set smallnum=05
If %smallnum% EQU 07 set smallnum=06
If %smallnum% EQU 08 set smallnum=07
If %smallnum% EQU 09 set smallnum=08
If %smallnum% EQU 9 set smallnum=09
If %smallnum% EQU 99 set /a bignum-=1
If %bignumhandle% EQU 1 GoTo :BigNumMods
GoTo :StopWatchHandle
:BigNumMods
If %bignum% EQU 01 set bignum=00
If %bignum% EQU 02 set bignum=01
If %bignum% EQU 03 set bignum=02
If %bignum% EQU 04 set bignum=03
If %bignum% EQU 05 set bignum=04
If %bignum% EQU 06 set bignum=05
If %bignum% EQU 07 set bignum=06
If %bignum% EQU 08 set bignum=07
If %bignum% EQU 09 set bignum=08
If %bignum% EQU 9 set bignum=09
:StopWatchHandle
cls
echo Program Launch Console, Version 1.0.2
echo.
echo StopWatch: %bignum%:%smallnum%
echo.
ping localhost -n 1 >nul
GoTo :StopWatchRoutine
:StopWatchExit
echo.
GoTo :PhaseThree
Я использую этот пакетный файл как часть пользовательского интерфейса, поэтому важно, чтобы его эхо-часть оставалась нетронутой. В противном случае приветствуются любые предложения о том, как сделать скрипт более эффективным.
Спасибо за вашу помощь, это очень, ОЧЕНЬ ценно.
0
, из-за чегоIF ... EQU ...
интерпретирует их как восьмеричные числа, а не десятичные. Кроме того, вы должны использоватьset /A
, способный выполнять математические операции... - person aschipfl   schedule 29.07.2015ss.SSS
, а неss:SS
. - person shoover   schedule 29.07.2015IF ... EQU ...
в двойные кавычки, тогда сравнение будет выполнено буквально. Да, вы иногда используетеSET /A
, но вы также выполняете декременты (-1
) в блоках:NumberMods
и:BigNumMods
с тоннамиIF
... - person aschipfl   schedule 30.07.2015