V určitých situacích, potřebujeme, aby se dávka chovala jinak přes týden (v produkčním čase) a jinak třeba v sobotu (mimo produkční čas).
Například dávka, kterou si backup software spouští před zálohováním: Taková dávka by mohla zastavovat určité služby, aby v průběhu zálohování nebyly klíčové datové soubory otevřené a jejich záloha tak byla konzistentní. Pokud by tohle provedla v produkčním čase, asi by měl administrátor spoustu prostoru k omlouvání výpadku služeb 😉
Drobnou komplikací je, že dost dobře není možné v obecném případě vyseknout informaci o dnu v týdnu z proměnné %date%
, protože nevím, jaké je na cílové stanici jazykové nastavení a formát data.
Obejdeme to následujícím skriptem:
@echo off &setlocal enableextensions set "TM_=%TEMP%\_TMP$.VBS" >%TM_% echo/WScript.echo WeekDay(Date, vbMonday) for /f %%? in ('cscript //nologo %TM_%') do (set "WD_=%%?" &&(del %TM_%)) if %WD_% == 6 ( echo Dneska je sobota ) else ( echo Dneska neni sobota ) endlocal &GoTo :EOF |
Finta spočívá v tom, že pomocí VBS funkce WeekDay
vložíme pořadové číslo dne v týdnu do proměnné %WD_%
.