麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > VBScript > 正文

用vbs刪除前一天創建的備份文件

2020-07-26 12:01:52
字體:
來源:轉載
供稿:網友
問:
您好,腳本專家!有一個程序每天都會創建一個具有類似于以下名稱的文件:backup_20050607.bak。如何才能刪除前一天的文件呢?
-- JC
答:
您好,JC。嗯,可以調用一個腳本自動刪除前一天產生的任何文件。伙計,就在幾周前我們曾用過一個類似這樣的腳本!
是的,我們還有印象。但往事不能重提。
除此之外,我們還要在此寫一個專欄。您需要一個腳本來刪除名如 backup_20050607.bak(其中,20050607 表示前一天,在本例中即為 2005 年 6 月 7 日)的文件,對嗎?您需要做的一切就是使用:
復制代碼 代碼如下:

dtmYesterday = Date - 1 
strYear = Year(dtmYesterday) 
strMonth = Month(dtmYesterday) 
If Len(strMonth) = 1 Then 
    strMonth = "0" & strMonth 
End If 
strDay = Day(dtmYesterday) 
If Len(strDay) = 1 Then 
    strDay = "0" & strDay 
End If 
strYesterday = strYear & strMonth & strDay 
strFileName = "C:/Backups/backup_" & strYesterday & ".bak" 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
objFSO.DeleteFile(strFileName) 

您可能已經料道,這里最為棘手的部分就是構建文件名;有了文件名后,刪除文件就是小事一樁了。那么,我們該如何構建該文件名呢?
對,文件名中每天都會發生變化的那一部分就是表示備份文件生成日期的那個部分。也就是說,我們所要做的全部事情就是構建文件名的這個部分,其它部分可以采用硬編碼來加入。因此,我們需要從確定前一天的日期開始,這可通過將當前日期減去一,然后該值存入一個名為 dtmYesterday 的變量來完成:
dtmYesterday = Date - 1
接下來,使用 Year 函數從 dtmYesterday 取得四位數字的年份值(例如 2005);該值將被存儲在變量 strYear 中。緊接著使用 Month 函數從 dtmYesterday 取得月份值。
但是請注意,對于月份值須得另外再進行一些編碼(對于日期也是如此)。為什么呢?是這樣,假定我們所處理的是六月份。此時,Month 函數將返回值 6。這并沒有什么問題,只不過在我們的文件名中為月份分配了兩位數字;需要將月份以 06 形式列出。因此,我們必須確定所得到的月份是一位數字還是兩位數字。如果是一位數字的月份,則必須在數字前面加零。我們就是象下面這樣做的:
If Len(strMonth) = 1 Then
    strMonth = "0" & strMonth
End If
這段代碼真的是一目了然。Len(長度)函數會告訴我們 strMonth 變量中有多少位數字。如果只有 1 位,則添加前導 0:
strMonth = "0" & strMonth
如果長度為 1 之外的任何值,則只需保持原樣即可。
取得月份值后,用函數 Day 重復同一過程,以便能檢索出日期的天部分。該值將被存儲在巧妙命名的變量 strDay 中。
這樣便提供了我們構建文件名所需的全部數據。為此,首先要使用下面這行代碼將年月日合在一起(得到類似 20050607 的字符串):
strYesterday = strYear & strMonth & strDay
然后,只需附加其余的路徑信息(在本例中,假定文件存儲在文件夾 C:/Backups 下):
strFileName = "C:/Backups/backup_" & strYesterday & ".bak"
如您所見,我們只需將字符串 C:/Backups/backup_、所構建的日期 (20050607) 以及 .bak 合并起來即可。將它們組合在一起之后將會得到類似下面的結果:
C:/Backups/backup_20050607.bak
很酷吧。
然后,我們將使用下面這兩行代碼創建一個 FileSystemObject 實例并刪除文件:
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(strFileName)
由于使用了 FileSystemObject,由于使用了 FileSystemObject,所以這一腳本只能在本地機上運行。但如果備份文件位于遠程計算機上,該怎么辦呢?沒問題,此時可以使用 WMI 找到并刪除該文件。那么,為什么不最先就使用 WMI 呢?是這樣,FileSystemObject 用不了一秒鐘就能找到并刪除文件,而 WMI 所需的時間則稍長一些。我們決定以速度和效率為先。
但正如我們所說的,如果文件位于遠程計算機上,則速度和效率并不會給您帶來太多好處。幸運的是,在這種情況下可以使用 WMI 腳本刪除文件。以下腳本(今天暫且不對其進行討論)將從名為 atl-fs-01 的遠程計算機上刪除備份文件:
復制代碼 代碼如下:

dtmYesterday = Date - 1 
strYear = Year(dtmYesterday) 
strMonth = Month(dtmYesterday) 
If Len(strMonth) = 1 Then 
    strMonth = "0" & strMonth 
End If 
strDay = Day(dtmYesterday) 
If Len(strDay) = 1 Then 
    strDay = "0" & strDay 
End If 
strYesterday = strYear & strMonth & strDay 
strFileName = "C://Backups//backup_" & strYesterday & ".bak" 
strComputer = "." 
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2") 
Set colFiles = objWMIService.ExecQuery _ 
    ("Select * from CIM_DataFile where Name = '" & strFileName & "'") 
For Each objFile in colFiles 
    objFile.Delete 
Next 
就像這樣,昨天已逝,我們可以全都裝作它從未發生過一樣。對嗎,老板?
注意:難道就不能省去這一切麻煩,簡單地刪除所有創建/修改日期等于前一天日期的文件嗎?可以,只要該文件夾中決不會存在具有相同日期因而可能會被意外刪除的任何其他文件就行。綜合考慮各種因素,上述做法似乎是最為安全的。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 精品一区二区久久久久久久网精 | 蜜桃视频在线观看免费 | 日本精品一区二区 | 亚洲成人综合网站 | 欧美一级棒 | 看个毛片 | 国产成年人视频 | 久久久久久久久久性 | 日韩黄色av网站 | 成人免费在线播放 | www.9191.com| 久久精品国产一区二区电影 | 国产九色视频在线观看 | 午夜色视频在线观看 | 亚洲导航深夜福利涩涩屋 | 久久久久久久久久一本门道91 | 欧美日韩高清在线观看 | 91精选视频在线观看 | 国产一级午夜 | 羞羞羞羞视频 | 国产成人综合在线视频 | 日本欧美一区二区三区视频麻豆 | 欧美一级在线看 | 久久国产乱子伦精品 | 日韩精品无码一区二区三区 | 欧美一级理论 | 国产美女视频一区二区三区 | 国产一级性生活视频 | 色婷婷a | 久久另类视频 | 久久2019中文字幕 | 午夜伊人| 黄色网页在线看 | 一区二区三区黄色 | 成人性生活视频 | 久久久久免费精品国产小说色大师 | aaaaa国产欧美一区二区 | 久色免费| 国产日韩在线视频 | 国产妇女乱码一区二区三区 | 看国产一级毛片 |