Ha parancssorban olyan fájlt szeretnénk létrehozni, aminek a nevében szerepel a dátum (pl. egy napi ütemezésű batchfileból logolni szeretnénk minden nap külön fájlba), akkor beleütközhetünk abba a problémába, hogy angol nyelvi környezetben a %date% környezeti változó DD/MM/YYYY alakú, viszont '/' karakter filenévben nem szerepelhet.
Z:\>echo %date%
21/01/2009
Nem kell elkeserednünk, mert le tudjuk kérdezni a környezeti változók rész-stringjeit is, átugorva a speciális karaktereket:
Z:\>echo %date:~6,4%
2009
Az első szám ahol kezdünk, a második pedig hogy hány karakterig menjünk.
Negatív előjelet is tudunk használni, így hátulról tudunk az X. karakternél kezdeni,
Z:\>echo %date:~-2%
09
ill. le tudjuk vágni az utolsó X karaktert.
Z:\>echo %date:~0,-5%
21/01
Így a konrét problémára a megoldás:
set filename=%date:~6,4%%date:~3,2%%date:~0,2%.log
valami.bat > %filename%
VBScript esetén egyébként talán legegyszerűbben:
dt = date
fname = year(dt) & right("0"&month(dt), 2) & right("0"&day(dt), 2)