BAT批處理文件,腳本時間值%time:~0,2%%time:~3,2%%time:~6,2%的用法。


最近公司的項目,需要部署一個oracle定時備份腳本,刪除掉特定時間前的備份文件。BAT批處理文件結合windows系統(任務計划程序)

正常情況下我們的任務計划會有反饋數值,通過它可以判斷這個任務計划上次是否運行正常。

  • 代碼 0 或 0x0:操作成功完成。
  • 代碼 1 或 0x1:調用的函數不正確或調用了未知函數。
  • 代碼 10 或 0xa:環境不正確。
  • 代碼 0x8009000f:常規訪問被拒絕

任務計划程--歷史記錄里,操作完成,任務完成。但是在任務欄--上次運行結果顯示不是操作成功完成(0x0),而是0x1。

通過以上錯誤代碼,去排除調用的函數,發現是腳本文件里的定義時間機制,與設定任務計划時間不匹配造成無法正確運行腳本。

我在任務計划設置的時間是 AM 0:30

bat腳本時間設定如下:

set var=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

導致腳本無法正常運行的語句如下:

%time:~0,2%%time:~3,2%%time:~6,2%

如下的各個操作的意義如下:
%time:~0,2%  表示從左向右指針向右偏0位,然后從指針偏移到的位置開始提取2位字符,結果是小時字段數值
%time:~3,2%  表示指針從左向右偏移3位,然后從偏移處開始提取2位字符,結果是分鍾字段數值
%time:~6,2%  表示指針從左向右偏移6位,然后從偏移處開始提取2位字符,結果是秒字段數值
//創建時間命名的文件夾

md d:\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%

%time:~0,2%%time:~3,2%%time:~6,2%時有個問題, 就是如果TIME 是00點的時候,電腦顯示的是0 不是00所以%time:~0,2%就報錯了。

例子:2019-1-20時間1:26:20

set fileDate=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%

set fileDate2=%date:~0,4%%date:~5,2%%date:~8,2%%time:~1,1%%time:~3,2%%time:~6,2%

echo fileDate:%fileDate%

echo fileDate2:%fileDate2%

fileDate:    20190120 12620(1前面是空格)
fileDate2:  2019012012620

總結:

1)如果要用%time:~0,2%%time:~3,2%%time:~6,2%  (運行腳本的時間一定是在10-23點區間,否則0-9(H)腳本調用函數錯誤,無法運行)

2)如果要用%time:~1,1%%time:~3,2%%time:~6,2%  (建議運行腳本的時間在0-9點這個區間,如果是>9點,

比如13點。會造成只顯示個位數字3,比如2019-1-20 時間13:26:20 會顯示2019012032620 從而影響時間的整體准確性)

3)或者是直接舍去時間,只用日期來定義文件名。

%date:~0,4%%date:~5,2%%date:~8,2%

比如2019-1-20 那么文件名會顯示為20190120.(如果需求是每天做一個備份,那么這樣命名是沒什么影響的,

如果是一天需要N個備份文件,請參照上面兩種時間設定)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM