[Windows] 環境變數的擴充功能
(注意:文中的百分號在存入時會造成其後文字都被截斷,因此改成全形的,實際使用時必須是半形才對)
問題:用Windows的排程在每天半夜自動備份檔案,備份檔名要帶當日月份與日期,例如:backup_0223.zip(前提是要完全用批次檔處理,不然自己寫程式當然就解決了)。
解法:
- 系統日期在DOS下可以用%DATE%環境變數取得
- 用類似 7z.exe a backup_%DATE%.zip d:dir1 的方式就完成了
- 結果並不像想的那麼單純。%DATE%傳回的是類似"2005/02/23 星期三"這樣的文字,
其內的斜線(/)或減號(-)都是用做命令列的選項符號,這樣的組合可能會造成錯誤。 - 在此最簡單的方法便是用環境變數的擴充功能了:backup_%DATE:~5,2%.zip→取環境變數DATE的值,
由第六碼開始取兩碼(由0開始算,第六碼要用5),組合後的檔名是backup_02.zip。 - 繼續取日期:backup_%DATE:~5,2%%DATE:~8,2%.zip→ 結果為backup_0223.zip
- 先用echo命令測試:echo backup_%DATE:~5,2%%DATE:~8,2%.zip
- 以上取子字串的位置會依控制台"地區及語言選項"內的日期格式設定而有不同
- Windows 2000與XP不清楚是否已有此擴充
這個環境變數的擴充功能幫我們節省許多時間,利用DOS命令 set /? 可以查詢到更多的擴充說明。
--------------------------------------------------------------------------------
環境變數取代功能已經有下列增強:
%PATH:str1=str2%
會將 PATH 環境變數展開,取代每個發現的 "str1" 與 "str2"的擴充結果。
"str2" 可以是空白字串,這會從擴充輸出中刪除全部 "str1"。"str1" 可以
用星號開始,這將會從擴充輸出的開頭開始,對應到從所有第一個發現含有
str1 的項目。
您也可以為擴充功能指定子字串。
%PATH:~10,5%
這將會擴充 PATH 環境變數,然後只使用擴充結果的第 11 個(位移 10)字元
後的 5 個字元如果長度未指定,將會預設為上次使用的變數值。如果數字(位
移或長度)是負數,使用的數字將會是環境變數的長度加上位移或指定長度。
%PATH:~-10%
將抽出 PATH 變數的最後 10 個字元。
%PATH:~0,-2%
將抽出 PATH 變數的最後 2 個字元。
最後,系統加入了延遲環境變數展開的支援。在預設狀態下,命令展開會啟
用這項支援,但是您可以在 CMD.EXE 用 /V 命令列參數來啟用/停用這個功
能。 請參看 CMD /?
##
您可能也會有興趣的類似文章
- [DOS] 以set指令的替換字串功能來解決資料夾重覆附加的小問題 (0則留言, 2016/03/07)
- 方便切換目錄的指令:PUSHD與POPD (0則留言, 2006/07/15)
- [Tools] 用7-Zip取代PKZipC (1則留言, 2005/07/18)
- 編輯環境變數PATH的人性化工具: Redmond Path (0則留言, 2008/04/19)
- [Batch#1] Windows批次檔-取得系統日期的簡單方法與環境變數字串操作 (初學者的命令行 #5) (2則留言, 2019/12/15)
- FireFox最新的擴充紀錄 (0則留言, 2006/07/08)
- Kopia定時快照式備份工具,大幅降低資料毀損機率 (0則留言, 2022/06/11)
- [Windows] 部署相同目錄結構檔案的簡便方法 (0則留言, 2005/03/15)
- [Tool] 快速編輯環境變數:Rapid environment Editor (0則留言, 2008/04/30)
- DOS視窗的設定 (0則留言, 2005/01/20)
- DOS (命令提示字元) 的巨集功能 (3則留言, 2005/01/18)
- [Vista] 路徑分隔字元也能使用正斜線…「部份」成功… (1則留言, 2008/04/10)
- 以title命令賦予命令提示字元(cmd.exe)不同的標題名稱以增加辨識度 (0則留言, 2013/10/29)
- 快速啟動「服務」、「新增/刪除程式」視窗的方法 (0則留言, 2005/01/20)
- DOS命令使用技巧1:最快把文字檔案貼入剪貼簿的方法 (0則留言, 2010/02/27)
經測試 WIN 2000 PRO SP4 support 環境變數的擴充功能 tks~