(view source code of sorttime3.bat as plain text)
@ECHO OFF
:: Windows 2000 and later only
IF NOT "%OS%"=="Windows_NT" GOTO OsErr
:: Remove the following line to use this batch file
:: in Windows NT 4 with the Resource Kit installed
VER | FIND "Windows NT" >NUL && GOTO OsErr
:: Help required?
IF NOT "%~1"=="" GOTO Syntax
:: Enable Command Extensions and use local variables
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 GOTO CmdExtErr
:: Export registry settings to a temporary file
START /W REGEDIT /E "%Temp%.\_SortTime.reg" "HKEY_CURRENT_USER\Control Panel\International"
:: Read the time format from the exported data
FOR /F "tokens=1* delims==" %%A IN ('TYPE "%Temp%.\_SortTime.reg" ^| FINDSTR /R /I /B /C:"\"iTime\"="') DO SET iTime=%%~B
:: Thanks for Daniel R. Foster for correcting a typo in the next line
FOR /F "tokens=1* delims==" %%A IN ('TYPE "%Temp%.\_SortTime.reg" ^| FINDSTR /R /I /B /C:"\"sTime\"="') DO SET sTime=%%~B
DEL "%Temp%.\_SortTime.reg"
:: Store current time in default Locale format
FOR /F "tokens=*" %%A IN ('TIME/T') DO SET Now=%%A
ECHO It's %Now% now
:: Format SortTime depending on registry settings
FOR /F "tokens=1,2* delims=%sTime% " %%A IN ('ECHO %Now%') DO (
SET Hour=%%A
SET Mins=%%B
)
:: Translate AM/PM to 24 hours format;
:: A correction was required for Windows XP,
:: thanks for Harry Teufel for finding this bug
ECHO.%Mins%| FIND /I "AM" >NUL && SET AmPm=A
ECHO.%Mins%| FIND /I "PM" >NUL && SET AmPm=P
:: AM/PM can be all upper or mixed case, with or without leading space; we'll just erase all possible characters
SET Mins=%Mins: =%
SET Mins=%Mins:A=%
SET Mins=%Mins:a=%
SET Mins=%Mins:M=%
SET Mins=%Mins:m=%
SET Mins=%Mins:P=%
SET Mins=%Mins:p=%
IF 1%Hour% LSS 20 SET Hour=0%Hour%
IF 1%Mins% LSS 20 SET Mins=0%Mins%
IF %Hour% LSS 12 IF /I "%AmPm%"=="P" SET /A Hour=1%Hour%-88
IF %Hour% EQU 12 IF /I "%AmPm%"=="A" SET Hour=00
SET Now=%Hour%%sTime%%Mins%
:Sort
FOR /F "tokens=1,2* delims=%sTime% " %%A IN ('ECHO %Now%') DO SET SortTime=%%A%%B
:: Thanks for Holger Stein who mailed me this correction (add leading zero):
IF %SortTime% LSS 1000 SET SortTime=0%SortTime%
ECHO For sorting purposes: %SortTime%
:: Purge local variables except SortTime
ENDLOCAL & SET SortTime=%SortTime%
GOTO End
:CmdExtErr
ECHO.
ECHO Command extensions need to be enabled for this batch file to run correctly.
ECHO.
ECHO You can run this batch file using the command:
ECHO.
ECHO CMD /X %~n0
ECHO.
ECHO to enable command extensions, however, the results will not be saved in
ECHO environment variables that way.
GOTO Syntax
:OsErr
ECHO.
ECHO This batch file requires Windows 2000 or a later version!
ECHO.
ECHO To use this batch file with Windows NT 4 you need to install FINDSTR from
ECHO the Resource Kit, and to remove the NT 4 check from this batch file.
ECHO Read the comment lines in this batch file for details.
:Syntax
ECHO.
ECHO SortTime.bat, Version 3.40 for Windows 2000 / XP
ECHO Displays the time of execution in the system's default time format and in
ECHO hhmm format for sorting purposes.
ECHO.
ECHO Usage: SORTTIME
ECHO.
ECHO Notes: [1] The sorted value is stored in the environment variable SORTTIME.
ECHO The SORTTIME value is independent of "International", "Regional"
ECHO or "Locale" settings.
ECHO [2] This batch file uses native Windows 2000 commands only.
ECHO To allow the use in Windows NT 4, make sure FINDSTR from the
ECHO Resource Kit is installed, and remove the NT 4 check from this
ECHO batch file. Read the comment lines for details.
ECHO [3] KiXtart, Perl, JScript, Rexx and VBScript versions are available
ECHO at http://www.robvanderwoude.com/datetimenonbatch.html
ECHO.
ECHO Written by Rob van der Woude
ECHO http://www.robvanderwoude.com
ECHO ^(with corrections by Daniel R. Foster, Harry Teufel and Holger Stein^)
ECHO.
:End
:: Done
page last modified: 2024-04-16; loaded in 0.0090 seconds