(view source code of sorttime3.bat as plain text)
@ECHO OFF
:: Windows 2000 and later onlyIF NOT "%OS%"=="Windows_NT" GOTO OsErr
:: Remove the following line to use this batch file:: in Windows NT 4 with the Resource Kit installedVER | FIND "Windows NT" >NUL && GOTO OsErr
:: Help required?IF NOT "%~1"=="" GOTO Syntax
:: Enable Command Extensions and use local variablesVERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 GOTO CmdExtErr
:: Export registry settings to a temporary fileSTART /W REGEDIT /E "%Temp%.\_SortTime.reg" "HKEY_CURRENT_USER\Control Panel\International"
:: Read the time format from the exported dataFOR /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 lineFOR /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 formatFOR /F "tokens=*" %%A IN ('TIME/T') DO SET Now=%%A
ECHO It's %Now% now
:: Format SortTime depending on registry settingsFOR /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 bugECHO.%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 charactersSET 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%
:SortFOR /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 SortTimeENDLOCAL & SET SortTime=%SortTime%
GOTO End
:CmdExtErrECHO.
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
:OsErrECHO.
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.
:SyntaxECHO.
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:: Donepage last modified: 2025-10-11; loaded in 0.0093 seconds