Pisząc skrypty CMD często potrzebuję zawrzeć w nazwie generowanego pliku datę i godzinę.
Niby nic trudnego, gdyby nie to, że przed godziną 10 występują liczby bez pierwszego zera. Zamiast 09 mamy 9 – ze spacją zamiast zera.
Powoduje to wystąpienie niepotrzebnie spacji w nazwie pliku, co komplikuje nam późniejsze operacje na pliku – dodatkowe cudzysłowy itp.
Poniższy skrypt rozwiązuje tę sprawę. Jako wynik zwracana jest zmienna: DATETIME w formacie YYYYMMDDHHMMSS
REM *************** DO NOT REMOVE ***********************
REM DATETIME Environment by Ogre2000 (2011)
REM Version 1.0
REM ogre2000@ogre2000.info
REM http://galaxys.pl
REM *************** DO NOT REMOVE ***********************
REM Valid for YYYY-MM-DD
REM Change if You have other system language
set dates=%date:~0,4%%date:~5,2%%date:~8,2%
Echo %dates%
REM Test ZERO before Hour
set testtime=%time:~0,1%
echo %testtime%
if “%testtime%”==” ” GOTO BEFORETEN
GOTO AFTERTEN
:BEFORETEN
echo %time%
set times=0%time:~1,1%%time:~3,2%%time:~6,2%
Echo %times%
GOTO SETDATETIME
:AFTERTEN
echo %time%
set times=%time:~0,2%%time:~3,2%%time:~6,2%
Echo %times%
GOTO SETDATETIME
:SETDATETIME
REM echo DATA %dates%
REM echo CZAS %times%
set datetime=%dates%%times%
echo DATETIME
Którą to zmienną można użyć w dalszej części skryptu.
UWAGA: W przypadku zastosowania w systemach z innymi niż wyżej użyte ustawieniami regionalnymi należy zmienić linijkę:
set dates=%date:~0,4%%date:~5,2%%date:~8,2%
na bardziej odpowiednią.
Poniżej załączam plik: DATETIME_ENV