Datum a čas v názvu souboru
Hezký den,
prosím o kontrolu dávkového souboru. Generuje mi to chybné názvy souborů před časem 10:00. Podle času systémových hodin od 10:00:00 hod. je to již v pořádku takto:
2021-09-04 - 10.21.07.txt
Co je toho příčinou? Kde dělám chybu? Prosím o vysvětlení a rady jak to vyřešit. Děkuji.
SETLOCAL
set LOGFILE_DATE=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%
set LOGFILE_TIME=%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%
set LOGFILE=%LOGFILE_DATE%" - "%LOGFILE_TIME%"".txt
command > %LOGFILE%
pause
Je to preto, že hodiny 00 až 09 sa zaznamenajú bez tej úvodnej nuly, a tým pádom sa ti názov suboru rozpadne.
Buď dáš názov súboru do úvodzoviek, alebo ošetríš tu nulu (dá sa to aj špeciálnym zápisom v set).
Tu je návod k tomu setu https://stackoverflow.com/questions/16401747/how-can-i-use-the-variable-time0-2-in-a-batch-file-so-that-times-with-a-lead/16402460
Alebo
https://serverfault.com/questions/147515/need-leading-zero-for-batch-script-using-time-variable
Děkuji za vysvětlení. Prosím o úpravu kódu. Ztrácím se v tom a je to mimo mé znalosti a schopnosti. Děkuji.
Doplněno: Potřebuji generovat název takto
2021-09-04 - 08.53.43.txt
toto používám kdesi v batce:
sekundami ani mezinárodním pomlčkovým zápisem data jsem se nezabýval, to si doděláš sám.
mimochodem místo zápisu času "_08.53" se mi pro přehlednost osvědčilo "_08h53"
je to pak hned jasné i lidem, co to vidí poprvé. a parsovat to jde stejně.
Naprosto se v tom ztrácím. Kódu nerozumím. Možná by mohla pomoci část kódu kde je patrná mezera.
if "%hh:~0,1%"==" " (set hh=0%hh:~1,1%)
Bohužel nevím jak to zapracovat do kódu v zadání dotazu. Snad někdo pomůže. Děkuji všem.
1) v případě podobných logů název souboru s mezerarami nedoporučuju, raději kombinovat pomlčky a dolní podtržítka. mj. nesmíš zapomenout pokaždé název souboru (proměnné) uzavřít do uvozovek.
tu chybu tam máš taky: command > %LOGFILE%
2) natvrdo předpokládáš české prostředí v konzoli, což není nejskvělejší nápad. na pc s angličtinou to vyrobí nesmysl.
taky napevno předpokládáš jen letošní rok. proč, plánuješ umřít?
3) starší systémy běžně vypisovaly proměnnou %date% i se zkratkou dne. w10 v tom mají podle jazyka trochu chaos. proto ten skript začíná tak, že si odřízne posledních 10 znaků jen s číselnou částí, viz příklady v původních zaremovaných komentářích.
4) pokud používáš nastavení hodnoty proměnné bez závorek kolem set=..., dávej si bacha, ať řádek nekončí volnou mezerou, bude v proměnné taky.
dodělal jsem tam i vteřiny, pro orientaci hodin je ponechán oddělovač "h", tečkou ho zvládneš nahradit.
Ten kód je tak trochu vražedný, ale pomohl. Děkuji.
Pokud by to někdo další řešil jinak, tak sem prosím napsat výsledný kód s komentářem. Určitě se sem časem vrátím... Díky.