@ECHO OFF IF !%1==!. %2 %COMSPEC% /E:4096 /C %0 . GOTO:START %1 %2 %3 %4 GOTO OUT :SEND ECHO E0 %3 %4 %5 %6 %7 %8 %9 1A>%TMP3% FOR %%_ IN (N%TMP2% RCX FF W0 Q) DO ECHO %%_>>%TMP3% DEBUG <%TMP3% >NUL TYPE %TMP2% EXIT :START FOR %%_ IN (0 1 2 3 4 5) DO SET TMP%%_=%TEMP%.\@CK%%_.BAT ECHO &>%TMP4% ECHO.>%TMP5% SET COM=%COMSPEC%/E:4096 SET F=%0 SET MM=! %COM%/C %0 . GOTO:SEND "SET" 20 "ESC" 3D 1B 0D 0A>%TMP1% %COM%/C %0 . GOTO:SEND "SET" 20 "CHAR_FE" 3D FE 0D 0A>>%TMP1% %COM%/C %0 . GOTO:SEND "SET" 20 "CHAR_DB" 3D DB 0D 0A>>%TMP1% CALL %TMP1% MEM/C |FIND "ANSI ">NUL SET ANSI=TRUE IF ERRORLEVEL 1 SET ANSI=FALSE :: use ANSI graphics - set to FALSE here to stop :: SET ANSI=FALSE :: vertical enlarge option - change to set default SET VE=FALSE :L4 SHIFT IF !%2==! GOTO K5 IF !%2==!BIG SET VE=TRUE IF !%2==!SMALL SET VE=FALSE IF !%2==!NORMAL SET ANSI=FALSE IF NOT !%2==!/? GOTO L4 ECHO %F% [/?] [NORMAL] [BIG] [SMALL] ECHO batch clock utility ECHO NORMAL specifies not to use ANSI.SYS colour graphics ECHO. which is default if the program detects it is installed ECHO BIG uses double height character font ECHO SMALL uses normal height character font (default) ECHO. GOTO QUIT :K5 SHIFT IF NOT !%3==! GOTO L4 FOR %%_ IN (C0 C1) DO SET %%_= IF %ANSI%==TRUE SET C0=%ESC%[1;34m IF %ANSI%==TRUE SET C1=%ESC%[0m SET BAR0=%CHAR_DB%%CHAR_DB%%CHAR_DB%%CHAR_DB% SET _=%BAR0%%BAR0%%BAR0% SET BAR0=%BAR0%%BAR0%%BAR0%%BAR0% SET BAR0=%C0% %BAR0%%BAR0%%BAR0%%BAR0%%_%%C1% IF NOT EXIST %TMP0% GOTO K3 FIND "%% !@FBBC2%ANSI% %%" <%TMP0% >NUL IF NOT ERRORLEVEL 1 GOTO K4 :K3 ECHO PLEASE WAIT... %COM%/C %F% . GOTO:DGVE >%TMP0% :K4 CLS :L1 ECHO EXIT|%COM%/KPROMPT PROMPT $T$_:>%TMP1% SET @=%PROMPT% CALL %TMP1% SET _=%PROMPT% SET PROMPT=%@% CHOICE /C&%_%@ SET _=>%TMP1%<%TMP4% CALL %TMP1% CALL %F% . GOTO:WRT %_% CHOICE /C%ESC%N /TN,01>NUL IF ERRORLEVEL 2 GOTO L1 :QUIT FOR %%_ IN (1 2 3 4 5) DO IF EXIST %TEMP%.\@CK%%_.BAT DEL %TEMP%.\@CK%%_.BAT GOTO OUT :: :WRT SET _0=%4 SET _1=%5 SET _2=%6 SET _3=%7 SET _4=%8 SET _5=%9 FOR %%_ IN (. . . . .) DO SHIFT IF %9==@]?& %F% . GOTO:WRT1 0 %_0% %_2% %_3% %_5% %5 %F% . GOTO:WRT1 %_0% %_1% %_3% %_4% %5 %6 GOTO OUT :WRT1 IF !%MM%==!%3%4%5%6 GOTO WRT2 SET MM=%3%4%5%6 :: get hour,minute ->M! FOR %%_ IN (! !! !!! !!!! !!!!! !!!!!! !!!!!!! !!!!!!!!) DO SET L%%_= CALL %TMP0% GOTO:C%3 CALL %TMP0% GOTO:C%4 CALL %TMP0% GOTO:C_3A CALL %TMP0% GOTO:C%5 CALL %TMP0% GOTO:C%6 CALL %TMP0% GOTO:C_2E SET M!=%L!% SET M!!=%L!!% SET M!!!=%L!!!% SET M!!!!=%L!!!!% SET M!!!!!=%L!!!!!% SET M!!!!!!=%L!!!!!!% SET M!!!!!!!=%L!!!!!!!% ECHO EXIT|%COM% /K PROMPT SET DD=$D$_:>%TMP1% CALL %TMP1% :WRT2 :: get seconds -> L! FOR %%_ IN (! !! !!! !!!! !!!!! !!!!!! !!!!!!! !!!!!!!!) DO SET L%%_= CALL %TMP0% GOTO:C%7 CALL %TMP0% GOTO:C%8 IF %ANSI%==FALSE CLS IF %ANSI%==TRUE ECHO %ESC%[H FOR %%_ IN (. .) DO ECHO %BAR0% IF %VE%==FALSE FOR %%_ IN (. . .) DO ECHO %BAR0% ECHO. ECHO. %DD% ECHO. ECHO. %C0%%M!%%L!%%C1% IF %VE%==TRUE ECHO. %C0%%M!%%L!%%C1% ECHO. %C0%%M!!%%L!!%%C1% IF %VE%==TRUE ECHO. %C0%%M!!%%L!!%%C1% ECHO. %C0%%M!!!%%L!!!%%C1% IF %VE%==TRUE ECHO. %C0%%M!!!%%L!!!%%C1% ECHO. %C0%%M!!!!%%L!!!!%%C1% IF %VE%==TRUE ECHO. %C0%%M!!!!%%L!!!!%%C1% ECHO. %C0%%M!!!!!%%L!!!!!%%C1% IF %VE%==TRUE ECHO. %C0%%M!!!!!%%L!!!!!%%C1% ECHO. %C0%%M!!!!!!%%L!!!!!!%%C1% IF %VE%==TRUE ECHO. %C0%%M!!!!!!%%L!!!!!!%%C1% ECHO. %C0%%M!!!!!!!%%L!!!!!!!%%C1% IF %VE%==TRUE ECHO. %C0%%M!!!!!!!%%L!!!!!!!%%C1% ECHO. ECHO [ESC] To exit ECHO. ECHO %BAR0% IF %VE%==FALSE FOR %%_ IN (. . . .) DO ECHO %BAR0% IF %ANSI%==TRUE ECHO %ESC%[30m%ESC%[K%ESC%[0m%ESC%[A GOTO OUT :DGVE ECHO %%1 %% !@FBBC2%ANSI% %% CALL %F% . GOTO:DGV C_2E . 0 0 0 0 0 0 0 0 0 0 1 8 1 8 0 0 CALL %F% . GOTO:DGV C0 0 3 C 6 6 6 E 7 E 7 6 6 6 3 C 0 0 CALL %F% . GOTO:DGV C1 1 1 8 3 8 1 8 1 8 1 8 1 8 7 E 0 0 CALL %F% . GOTO:DGV C2 2 3 C 6 6 0 6 0 C 1 8 3 0 7 E 0 0 CALL %F% . GOTO:DGV C3 3 3 C 6 6 0 6 1 C 0 6 6 6 3 C 0 0 CALL %F% . GOTO:DGV C4 4 0 C 1 C 3 C 6 C 7 E 0 C 0 C 0 0 CALL %F% . GOTO:DGV C5 5 7 E 6 0 7 C 0 6 0 6 6 6 3 C 0 0 CALL %F% . GOTO:DGV C6 6 1 C 3 0 6 0 7 C 6 6 6 6 3 C 0 0 CALL %F% . GOTO:DGV C7 7 7 E 0 6 0 C 1 8 3 0 3 0 3 0 0 0 CALL %F% . GOTO:DGV C8 8 3 C 6 6 6 6 3 C 6 6 6 6 3 C 0 0 CALL %F% . GOTO:DGV C9 9 3 C 6 6 6 6 3 E 0 6 0 C 3 8 0 0 CALL %F% . GOTO:DGV C_3A : 0 0 0 0 1 8 1 8 0 0 1 8 1 8 0 0 ECHO :OUT GOTO OUT :DGV SET S= %=% SET M=%4 IF %ANSI%==TRUE SET M=%CHAR_FE% SET C=! ECHO :%3 :DGL SET _= FOR %%_ IN (CALL SHIFT) DO %%_ %F% . GOTO:DGE %5 FOR %%_ IN (CALL SHIFT) DO %%_ %F% . GOTO:DGE %5 ECHO SET L%C%=%%L%C%%%%_% SET C=%C%! IF NOT %C%==!!!!!!!!! GOTO DGL :: ECHO GOTO OUT ECHO %%TMP5%% GOTO OUT :DGE IF %3==0 SET _=%_%%S%%S%%S%%S% IF %3==1 SET _=%_%%S%%S%%S%%M% IF %3==2 SET _=%_%%S%%S%%M%%S% IF %3==3 SET _=%_%%S%%S%%M%%M% IF %3==4 SET _=%_%%S%%M%%S%%S% IF %3==5 SET _=%_%%S%%M%%S%%M% IF %3==6 SET _=%_%%S%%M%%M%%S% IF %3==7 SET _=%_%%S%%M%%M%%M% IF %3==8 SET _=%_%%M%%S%%S%%S% IF %3==9 SET _=%_%%M%%S%%S%%M% IF %3==A SET _=%_%%M%%S%%M%%S% IF %3==B SET _=%_%%M%%S%%M%%M% IF %3==C SET _=%_%%M%%M%%S%%S% IF %3==D SET _=%_%%M%%M%%S%%M% IF %3==E SET _=%_%%M%%M%%M%%S% IF %3==F SET _=%_%%M%%M%%M%%M% GOTO OUT :OUT