|
| 1 | +@ECHO OFF |
| 2 | +IF NOT "%OS%"=="Windows_NT" GOTO Syntax |
| 3 | +IF "%?1"=="" GOTO Syntax |
| 4 | +IF NOT "%?6"=="" GOTO Syntax |
| 5 | +ECHO .%* | FIND "?" > NUL && GOTO Syntax |
| 6 | + |
| 7 | +SETLOCAL ENABLEDELAYEDEXPANSION |
| 8 | +FOR /F "tokens=2-4 delims=(/-)" %%A IN ('VER ?| DATE') DO ( |
| 9 | + SET Var1=%%A |
| 10 | + SET Var2=%%B |
| 11 | + SET Var3=%%C |
| 12 | +) |
| 13 | +FOR /F "tokens=2 delims=:" %%A IN ('VER ?| DATE ?| FIND /V "("') DO ( |
| 14 | + FOR /F "tokens=1-3 delims=/- " %%B IN ("%%A") DO ( |
| 15 | + SET %Var1%=%%B |
| 16 | + SET %Var2%=%%C |
| 17 | + SET %Var3%=%%D |
| 18 | + ) |
| 19 | +) |
| 20 | +IF /I NOT "%?1"=="%Var1%" IF /I NOT "%?1"=="%Var2%" IF /I NOT "%?1"=="%Var3%" ( |
| 21 | + ENDLOCAL |
| 22 | + GOTO Syntax |
| 23 | +) |
| 24 | +IF /I "%?4"=="/LZ" (SET Delim=) ELSE (SET Delim=%4) |
| 25 | +IF /I NOT "%?3"=="%Var1%" IF /I NOT "%?3"=="%Var2%" IF /I NOT "%?3"=="%Var3%" IF /I NOT "%?3"=="/LZ" (SET Delim=%?3) |
| 26 | +IF /I NOT "%?2"=="%Var1%" IF /I NOT "%?2"=="%Var2%" IF /I NOT "%?2"=="%Var3%" IF /I NOT "%?2"=="/LZ" (SET Delim=%?2) |
| 27 | +ECHO.%* | FIND /I "/LZ" >NUL |
| 28 | +IF NOT ERRORLEVEL 1 CALL :AddLeadingZero |
| 29 | +SET DateFmt=!%1! |
| 30 | +IF /I NOT "%?2"=="%Delim%" IF /I NOT "%?2"=="/LZ" (SET DateFmt=%DateFmt%%Delim%!%2!) |
| 31 | +IF /I NOT "%?3"=="%Delim%" IF /I NOT "%?3"=="/LZ" (SET DateFmt=%DateFmt%%Delim%!%3!) |
| 32 | +ENDLOCAL & SET DateFmt=%DateFmt% |
| 33 | + |
| 34 | +SET DateFmt |
| 35 | + |
| 36 | +GOTO:EOF |
| 37 | + |
| 38 | + |
| 39 | +:AddLeadingZero |
| 40 | +CALL SET Char1=%%%Var1%:?0,1%% |
| 41 | +IF NOT "%Char1%"=="0" ( |
| 42 | + IF !%Var1%! LSS 10 SET %Var1%=0!%Var1%! |
| 43 | +) |
| 44 | +CALL SET Char1=%%%Var2%:?0,1%% |
| 45 | +IF NOT "%Char1%"=="0" ( |
| 46 | + IF !%Var2%! LSS 10 SET %Var2%=0!%Var2%! |
| 47 | +) |
| 48 | +CALL SET Char1=%%%Var3%:?0,1%% |
| 49 | +IF NOT "%Char1%"=="0" ( |
| 50 | + IF !%Var3%! LSS 10 SET %Var3%=0!%Var3%! |
| 51 | +) |
| 52 | +GOTO:EOF |
| 53 | + |
| 54 | + |
| 55 | +:Syntax |
| 56 | +ECHO DateFmt.bat, Version 0.52 BETA for Windows NT 4 and later |
| 57 | +ECHO Display the current date in the specified format |
| 58 | +ECHO. |
| 59 | +ECHO Usage: DATEFMT date_format [ delimiter ] [ /LZ ] |
| 60 | +ECHO. |
| 61 | +IF "%OS%"=="Windows_NT" FOR /F "tokens=2-4 delims=()/-" %%A IN ('VER ?| DATE ?| FIND "("') DO ECHO Where: date_format is any combination of %%A, %%B and/or %%C |
| 62 | +IF NOT "%OS%"=="Windows_NT" ECHO Where: date_format is any combination of dd, mm and/or yy |
| 63 | +ECHO (these date_format options are always in the computer's |
| 64 | +IF NOT "%OS%"=="Windows_NT" ECHO local language; to look them up, type VER ¦ DATE) |
| 65 | +IF NOT "%OS%"=="Windows_NT" GOTO Skip |
| 66 | +ECHO local language; to look them up, type VER ?| DATE) |
| 67 | +:Skip |
| 68 | +ECHO delimiter is the delimiter to be used in the end result |
| 69 | +ECHO /LZ use leading zeroes in the end result |
| 70 | +ECHO. |
| 71 | +ECHO Examples (for English Windows versions): |
| 72 | +ECHO DATEFMT yy mm dd --- 2007115 (January 15 or November 5, 2007) |
| 73 | +ECHO DATEFMT yy mm dd - --- 2007-11-5 (November 5, 2007) |
| 74 | +ECHO DATEFMT yy mm dd - /LZ --- 2007-11-05 (November 5, 2007) |
| 75 | +ECHO DATEFMT mm /LZ --- 01 (January) |
| 76 | +ECHO DATEFMT yy mm - /LZ --- 2007-06 (June 2007) |
| 77 | +ECHO DATEFMT dd mm dd * /LZ --- 11*03*11 (March 11) |
| 78 | +ECHO. |
| 79 | +ECHO Inspired by Simon Sheppard's GetDate.bat |
| 80 | +ECHO http://www.ss64.com/ntsyntax/getdate.html |
| 81 | +ECHO Written by Rob van der Woude |
| 82 | +ECHO http://www.robvanderwoude.com |
0 commit comments