iT邦幫忙

0

如何利用Batch檔定期把舊版本的程式刪除

請教各位大大,小弟公司有個程式在執行時會從服務器下載最新版本的壓縮檔,下載后自動進行解壓縮,每次解壓縮都會建立新的目錄,該目錄會用下載的日期命名,這部分目前都沒有問題,但是隨著時間一久,舊版的目錄越積越多,由於公司內部很多電腦,一台一台去刪除不太實際,因此希望寫個batch,把舊版的目錄刪除。
環境:Windows 10

在網上搜尋很多關於刪除的做法,包含用for或是forfile的語法,但是大部分都是對所有特定的檔案,但是我的需求是必須保留最后一版,還請各位大大能不吝指導一下。

dragonH iT邦超人 5 級 ‧ 2020-06-20 14:59:58 檢舉
>但是我的需求是必須保留最后一版

那就找到如何判斷是你所謂的最後一版的方法

例如最後修改日期之類的

再把它跟你之前找到的刪除方法合併

就是你要的
ks1217 iT邦研究生 1 級 ‧ 2020-06-20 17:25:17 檢舉
forfile的語法, 您可以用參數 /d -1 (一天前)的 都刪除,
這樣就會保留今天的,, 但如果是每天都很多版本, 可能就不太適用, 但總比不刪好多了.
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
IT 癡
iT邦高手 1 級 ‧ 2020-06-21 20:36:00

"有個程式在執行時會從服務器下載最新版本的壓縮檔"
既然會自動下載最新版,你何必在意最後版本要留存,如果你解壓縮都是在 Windows 預設目錄 (使用者的 temp,但該目錄預設載隱藏狀態,請發問者自行爬文如何取消隱藏) ,bat 指到該目錄、下 del \目錄全名\temp. /f /s /q 就可

0
ATF_G
iT邦新手 5 級 ‧ 2020-06-21 21:45:39

用dir寫入文字檔(可依建檔日期排序)
再從文字檔讀取後,從第二個開始讀取字串(如果是從最新排到最舊)
再依讀取到的字串刪除舊目錄
如果只能用bat寫的話

謝謝各位大大的指點,目前預計採用的作法為:

  1. 用dir /b將目錄下的所有程式名稱匯入檔案
  2. 用for /r將檔案內每個目錄用set指定變數
  3. 將變數總數減一
  4. 用for /r 將變數對應的程式刪除

我要發表回答

立即登入回答