用vbs將本地文件替換為在文件服務器上找到的新版本
更新時間:2007年03月26日 00:00:00 作者:
問:
您好,腳本專家!如何將本地文件的修改日期與文件服務器上的副本進行比較,并且,如果本地文件的版本更舊,將其替換為文件服務器上的版本?
-- DC
答:
您好,DC。讓我們想想,您是想將某些舊的東西替換為新的。不知道為什么,這讓我們感到很不安。
嗯,并不是因為腳本專家正在變老,這得提醒您,我們沒有。畢竟,膝蓋和后背就應該是這么吱吱作響的;不然怎么知道它們在發(fā)揮作用呢??。?
注意:據(jù)說,當愛斯基摩人老得不中用的時候,他們會被拋棄在大塊浮冰上任其自生自滅。幸好腳本專家都不是愛斯基摩人,而我們每天都要穿戴好外衣、手套和長統(tǒng)帽上班(包括夏天)。以防萬一。
不過比起過時的腳本專家來說,您可能更關心過時的文件,是吧?下面這個腳本將替換本地文件 C:\Scripts\Test.txt(如果此文件正好比其在服務器 atl-fs-01 上的副本更舊):
Const OverwriteExisting = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLocalFile = objFSO.GetFile("c:\scripts\test.txt")
dtmLocalDate = objLocalFile.DateLastModified
Set objServerFile = objFSO.GetFile("\\atl-fs-01\public\test.txt")
dtmServerDate = objServerFile.DateLastModified
If dtmLocalDate < dtmServerDate Then
objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
End If
如您所見,這是個非常簡短的小腳本。(我們必須承認除去有點困擾我們的過時的舊東西真的很容易。)我們首先創(chuàng)建一個名為 OverwriteExisting 的常量并將其值設置為 True。我們將使用此常量告訴 FileSystemObject 可以對目標文件的現(xiàn)有實例進行覆蓋。默認情況下,如果某文件在驅動器 2 上已存在,則 FileSystemObject 不會將其從驅動器 1 復制到驅動器 2 上。
說到 FileSystemObject,我們在此腳本的下一行創(chuàng)建此對象 (Scripting.FileSystemObject) 的一個實例。然后,我們使用以下兩行代碼綁定到我們的第一個文件 (C:\Scripts\Test.txt),并將此文件的上次修改日期(DateLastModified 屬性)存儲在名為 dtmLocalDate 的變量中:
Set objLocalFile = objFSO.GetFile("c:\scripts\test.txt")
dtmLocalDate = objLocalFile.DateLastModified
然后,通過創(chuàng)建對服務器版本 Test.txt 的對象引用重復此過程。請注意,此處我們使用的變量名稱不同:本地文件的對象引用存儲在 objLocalFile 中,服務器文件的對象引用存儲在 objServerFile 中。不用說,我們還使用了不同的變量 (dtmServerDate) 來存儲此上次修改日期:
Set objServerFile = objFSO.GetFile("\\atl-fs-01\public\test.txt")
dtmServerDate = objServerFile.DateLastModified
仍在看嗎?下一步我們需要確定本地文件是否比服務器文件更舊。下面這行代碼就用來解決這個問題:
If dtmLocalDate < dtmServerDate Then
別被這的語法搞糊涂了。我們很容易假定舊文件的日期應該大于新文件。但實際上日期不是這么處理的。假定“文件 A”的修改日期為 2/1/2006,“文件 B”的修改日期為 2/15/2006。“文件 A”比較舊,這意味著“文件 A”的修改日期小于(即,產(chǎn)生早于)“文件 B”。
那么如果本地文件比其服務器副本更舊,如何將本地文件替換為服務器上找到的副本?方法如下:
objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
正如您看到的,我們要做的就是調用 CopyFile 方法并向其傳遞三個參數(shù):
? 我們想要復制的文件(即,服務器上找到的 Test.txt 版本)的路徑。
? 我們想要將此文件復制到的路徑。在本例中,即為本地文件的路徑。
? 常量 OverwriteExisting,它用來告訴腳本繼續(xù)進行,并使用從服務器復制的版本替換本地文件。
至此您已實現(xiàn)了您的目的。然而,請記住,此腳本僅適用于舊文件。您不能使用它來替換,嗯,老腳本專家。(當然,倒不是有人夢想過替換腳本專家。不過,還是以防萬一 ...)
您好,腳本專家!如何將本地文件的修改日期與文件服務器上的副本進行比較,并且,如果本地文件的版本更舊,將其替換為文件服務器上的版本?
-- DC
答:
您好,DC。讓我們想想,您是想將某些舊的東西替換為新的。不知道為什么,這讓我們感到很不安。
嗯,并不是因為腳本專家正在變老,這得提醒您,我們沒有。畢竟,膝蓋和后背就應該是這么吱吱作響的;不然怎么知道它們在發(fā)揮作用呢??。?
注意:據(jù)說,當愛斯基摩人老得不中用的時候,他們會被拋棄在大塊浮冰上任其自生自滅。幸好腳本專家都不是愛斯基摩人,而我們每天都要穿戴好外衣、手套和長統(tǒng)帽上班(包括夏天)。以防萬一。
不過比起過時的腳本專家來說,您可能更關心過時的文件,是吧?下面這個腳本將替換本地文件 C:\Scripts\Test.txt(如果此文件正好比其在服務器 atl-fs-01 上的副本更舊):
復制代碼 代碼如下:
Const OverwriteExisting = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLocalFile = objFSO.GetFile("c:\scripts\test.txt")
dtmLocalDate = objLocalFile.DateLastModified
Set objServerFile = objFSO.GetFile("\\atl-fs-01\public\test.txt")
dtmServerDate = objServerFile.DateLastModified
If dtmLocalDate < dtmServerDate Then
objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
End If
說到 FileSystemObject,我們在此腳本的下一行創(chuàng)建此對象 (Scripting.FileSystemObject) 的一個實例。然后,我們使用以下兩行代碼綁定到我們的第一個文件 (C:\Scripts\Test.txt),并將此文件的上次修改日期(DateLastModified 屬性)存儲在名為 dtmLocalDate 的變量中:
Set objLocalFile = objFSO.GetFile("c:\scripts\test.txt")
dtmLocalDate = objLocalFile.DateLastModified
然后,通過創(chuàng)建對服務器版本 Test.txt 的對象引用重復此過程。請注意,此處我們使用的變量名稱不同:本地文件的對象引用存儲在 objLocalFile 中,服務器文件的對象引用存儲在 objServerFile 中。不用說,我們還使用了不同的變量 (dtmServerDate) 來存儲此上次修改日期:
Set objServerFile = objFSO.GetFile("\\atl-fs-01\public\test.txt")
dtmServerDate = objServerFile.DateLastModified
仍在看嗎?下一步我們需要確定本地文件是否比服務器文件更舊。下面這行代碼就用來解決這個問題:
If dtmLocalDate < dtmServerDate Then
別被這的語法搞糊涂了。我們很容易假定舊文件的日期應該大于新文件。但實際上日期不是這么處理的。假定“文件 A”的修改日期為 2/1/2006,“文件 B”的修改日期為 2/15/2006。“文件 A”比較舊,這意味著“文件 A”的修改日期小于(即,產(chǎn)生早于)“文件 B”。
那么如果本地文件比其服務器副本更舊,如何將本地文件替換為服務器上找到的副本?方法如下:
objFSO.CopyFile objServerFile.Path, objLocalFile.Path, OverwriteExisting
正如您看到的,我們要做的就是調用 CopyFile 方法并向其傳遞三個參數(shù):
? 我們想要復制的文件(即,服務器上找到的 Test.txt 版本)的路徑。
? 我們想要將此文件復制到的路徑。在本例中,即為本地文件的路徑。
? 常量 OverwriteExisting,它用來告訴腳本繼續(xù)進行,并使用從服務器復制的版本替換本地文件。
至此您已實現(xiàn)了您的目的。然而,請記住,此腳本僅適用于舊文件。您不能使用它來替換,嗯,老腳本專家。(當然,倒不是有人夢想過替換腳本專家。不過,還是以防萬一 ...)
相關文章
VBS 腳本不能運行 提示W(wǎng)indows無法訪問指定設備路徑或文件
Windows無法訪問指定設備路徑或文件,您可能沒有合適的權限訪問這個項目.2009-10-10VBScript使用ADSI為IIS批量添加屏蔽或允許訪問的IP
用ADSI+ASP添加IP到IIS禁止訪問列表中2008-12-12VBS下載者(通過vbscript實現(xiàn)文件下載)
這篇文章主要介紹了通過vbscript實現(xiàn)文件下載功能的實現(xiàn)代碼,主要是使用了ADODB.Stream,需要的朋友可以參考下2014-06-06xp、2003開3389+非net創(chuàng)建管理用戶+Shift后門+自刪除腳本vbs
喜歡VBS腳本的朋友可以下載使用。此腳本免殺,可以用于WebShell提供時使用,適用于2003系統(tǒng)和XP系統(tǒng)。2008-06-06