Dávka pro přejmenování souboru podle aktuálního data a času

Diskuze výhradně o operačním systému Windows 10

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Firestone 30. 4. 2018 10:10

Zdravím, rád bych poprosil zkušenější o radu ohledně přejmenování souboru pomocí příkazové řádky s použitím aktuálního data a času.
Zkoušel jsem následující:
Kód: Vybrat vše
set HR=%time:~0,2%
set HR=%Hr: =0%
set HR=%HR: =%
rename pokus.txt pokus_%date:~10,4%-%date:~4,2%-%date:~7,2%_%HR%%time:~3,2%.txt
Ale namísto očekávaného formátu
Kód: Vybrat vše
pokus_2018-04-30_1008.log
dostávám
Kód: Vybrat vše
pokus_018-0.-4._1008.txt
Jestli to nebude souviset s nějakým systémovým nastavení času (US vs. EU formát času např.)? Zkoušel jsem škádlit strýčka Gůgla, ale moc jsem nezmoudřel :(
Díky za případnou radu.
Firestone
Junior

Odeslat příspěvekod ilja2001 30. 4. 2018 10:41

Používám tento zápis:

Kód: Vybrat vše
@For /F "tokens=1,2,3,4 delims=.,/ " %%A in ('echo %date%') do @(
Set den1=%%A
Set den=%%B
Set mesic=%%C
Set rok=%%D
)

REM prikad pouziti
ren test.txt test_%rok%_%mesic%_%den%.txt
ilja2001
Junior

Odeslat příspěvekod Firestone 30. 4. 2018 11:57

Paráda, vypadá funkčně, díky moc!
Firestone
Junior

Odeslat příspěvekod ilja2001 30. 4. 2018 12:05

Není zač, taky jsem před časem toto hledal pro značení záloh.
Ještě doplnění, ta proměnná "den1" má v sobě den v týdnu, protože příkaz "date" to tak vypisuje. Pokud by pro někoho byl potřebný den v týdnu pro další použití.
ilja2001
Junior

Odeslat příspěvekod Firestone 30. 4. 2018 12:41

Ještě by se mohl někdy hodit čas. Ale v mém případě taky není nezbytně nutno.
Firestone
Junior

Odeslat příspěvekod ilja2001 30. 4. 2018 17:05

Tak to jde udělat analogicky, doplnit do oddělovacích znamének ":" a pojmenovat nové proměnné. Pak by to celé vypadalo asi takto, ale třeba by to šlo ještě zjednodušit.
Kód: Vybrat vše
@For /F "tokens=1,2,3,4 delims=.,/ " %%A in ('echo %date%') do @(
Set den1=%%A
Set den=%%B
Set mesic=%%C
Set rok=%%D
)

@For /F "tokens=1,2,3,4 delims=:.,/ " %%E in ('echo %time%') do @(
Set HH=%%E
Set MM=%%F
Set SS=%%G
)

REM prikad pouziti
ren test.txt test_%rok%_%mesic%_%den%_%HH%_%MM%_%SS%.txt
ilja2001
Junior

Odeslat příspěvekod Pytlík 30. 4. 2018 18:27

jenom bych dodal, že parametr tokens lze také napsat takto:
for /f "tokens=1-4 delims....
potom také je zbytečné tolikrát uvádět znak @ (který potlačuje výpis na obrazovku). Stačí jedenkrát napsat na začátek dávky
@echo off
Pytlík
Pokročilý
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník