2008-12-22

如何利用批次檔取得系統日期時間

之前曾經有想過要利用批次檔加上 windows 的排程來定時為測試用的資料庫進行備份,只是不知道怎麼取得目前系統日期時間來使用,最近剛好看到這幾篇文章,留下來做參考:

取得今天日期的年、月、日:

for /f "tokens=1-4 delims=-/ " %%i IN ("%date%") DO (
    set year=%%i
    set month=%%j
    set day=%%k
)
取得當下時間的時、分、秒、百分之一秒
for /f "tokens=1-4 delims=:." %%i IN ("%time%") DO (
    set hour=%%i
    set minute=%%j
    set second=%%k
    set centisecond=%%l
)
組合含有日期、時間的字串:
SET OutputDir=%year%%month%%day%_%hour%_%minute%_%second%_%centisecond%
指令取得上個月的月份(使用 SET /A,/A 可以做數值運算(arithmetic)):
@echo off
rem 把日期裡的斜線拿掉;2008/10/21→20081021
set Today=%DATE:/=%
 
set ThisYear=%Today:~0,4%
 
rem 取回今天的年度月份;200810
set ThisMonth=%Today:~4,2%
 
rem 本月份減1取得上個月份
set /A LastMonth=%ThisMonth%-1
 
rem 如果是1月份的話,要把年度減1
if "%LastMonth%"=="0" set /A ThisYear=%ThisYear%-1
 
if "%LastMonth%"=="0" set LastMonth=12
 
rem 如果是1月到9月時,左補零成為01~09
if "%LastMonth:~1,1%"=="" set
LastMonth=0%LastMonth%
 
echo Year=%ThisYear%
echo Month=%LastMonth%

參考:

沒有留言: