Příkazová řádka: krájení stringu

Potřeboval jsem v „DOSu“ (lépe řečeno z příkazové řádky) udělat složku, která bude obsahovat aktuální datum a čas. Řešení je jednoduché (ale na první pohled hrozivě vypadající).

mkdir %date:~-4,4%%date:~-7,2%%date:~3,2%-%time:~0,2%%time:~3,2%%time:~6,2%

Ačkoli to vypadá děsivě, vlastně to není nic jiného, než krájení řetězce. Takže pokud vám díky jinému lokálnímu nastavení data a času vychází nesmysl, stačí si pohrát s indexy (od kterého znaku, kolik znaků se má vykrojit).

To, jak vypadá řetězec obsahující datum (a čas) zjistíme následujícími příkazy:

echo %date%
echo %time%

Jak se to krájí, jak se to počítá?

Začátek řetězce je vlevo (překvapivě 😉 ). Počítá se tedy zleva. První index je od kolikátého znaku a druhý index kolik se má vzít znaků. Takže tohle

echo %date:~0,2%

vezme první dva znaky z datumu. Zatímco takhle

echo %date:~-4,2%

začne na čtvrtém znaku od konce a vysekne dva znaky (tedy 4. a 3. od konce).

Pro názornost si ještě vysekneme řetězec rok_měsíc (RRRR_MM):

C:\> echo %date%
pá 05.11.2010
 
C:\> echo %date:~-4,4%_%date:~-7,2%
2010_11

Tak hurá do toho!

A pokud byste potřebovali nahrazování znaků v řetězci, koukněte na příspěvek Příkazová řádka: nahrazení znaku ve stringu

1 komentář

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*