雖然Windows有了Windows Terminal和PowerShell等腳本工具,但批次檔在簡單的需求狀況下還是很方便的選擇。
系統日期在產生備份檔等場合很常用,本文介紹批次檔裡取得系統日期的方法。
DATE環境變數
系統日期可由DATE環境變數取得,在DATE前後加上 % 即可取出其值:
d:\>echo %DATE%
2019/12/15
DATE的值受日期格式設定而有不同,可能是2019/1/2或2019/01/02等值,為了方便取成固定格式,最好把日期格式改成不足10的數字左補零的格式。以下指令皆預設日期格式固定為YYYY/MM/DD,長度為10個字元。
變更日期與時間格式必須透過控制台來修改,或使用下列批次檔直接變更登錄的值:
▼ date-fmt.bat
取出年、月、日
環境變數有下列幾種字串替換的操作:
- 取代:用冒號和等號
格式:環境變數:字串1=字串2
功能:把環境變數值的[字串1]替換成[字串2]
▼ 把日期的斜線換成星號
echo %DATE:/=*%
2019*12*15
▼ 把日期的斜線都刪掉
echo %DATE:/=%
20191215
通常我們都會拿YYYYMMDD這樣的日期來用,因為Windows命令的參數選項都是以 / 來指定的,因此最好不用使用帶有斜線的參數。
- 取子字串:用 ~ 和 ,
格式:環境變數:~開始位置[,長度]
開始位置由 0 起算 (Zero-based)
開始位置若為負值,表示由結尾向前
功能:環境變數的子字串操作
▼ 取日期變數的系統日(最後兩個字元)
echo %DATE:~-2%
15
備份檔是1至31日循環時,就能使用日數的方法。例如:
set DAY=%DATE:~-2%
"c:\Program Files\7-zip\7z.exe" a s:\backup\data-%DAY%.7z d:\backup\*.dat
另外,如何求出昨天或明天的日數呢?環境變數要運算只要使用set /A 即可。
set TODAY=%DATE:~-2%
set /A PREVDAY=%TODAY%-1
set /A NEXTDAY=%TODAY%+1
echo %PREVDAY%
14
echo %NEXTDAY%
16
▼ 取出月份(由第6個字元開始取2個字元)
echo %DATE:~5,2%
12
▼ 取出年度
echo %DATE:~0,4%
2019
解說影片
##
您可能也會有興趣的類似文章
- 如何用批次指令取得上個月的月份-再修訂版 (12則留言, 2008/10/21)
- [DOS] 以set指令的替換字串功能來解決資料夾重覆附加的小問題 (0則留言, 2016/03/07)
- [Windows] 去除環境變數DATE與TIME內的空白 (0則留言, 2008/04/20)
- [Vista] 設定環境變數SET命令的擴充 (0則留言, 2008/04/19)
- [Windows] 刪除特定Java process的方法 (0則留言, 2017/08/02)
- 萬用影音轉檔程式:FFMpeg與HD專用的VideoConverter (0則留言, 2009/05/10)
- 開始使用Cygwin以取代cmd.exe (2則留言, 2007/01/11)
- [Windows] 環境變數的擴充功能 (1則留言, 2005/02/23)
- 快速找出類別所在jar檔的命令行工具:LibraryFinder (0則留言, 2016/02/18)
- 方便切換目錄的指令:PUSHD與POPD (0則留言, 2006/07/15)
- 替Prompt加上顏色 (1則留言, 2004/12/03)
- 強化Windows Mobile的剪貼簿功能:Clipboard Tool 1.6 (0則留言, 2009/03/23)
- Vista適應中~幾個開發環境上的差異 (3則留言, 2008/03/26)
- Windows+Linux雙系統救回grub選單的步驟 (0則留言, 2014/01/18)
- 更新Windows 10.10586後,Office和SQL Server 2012消失了… (0則留言, 2015/12/21)