2012-01-26 54 views
4

我有一個vbscript用於重命名文件。我需要在腳本中實現的是刪除「新文件」,如果它已經存在。如果文件存在,然後刪除文件

例如:我有一批文件被命名爲11111111.dddddddd.pdf,其中文件被重命名爲11111111.pdf。問題在於,當我重命名爲11111111.pdf格式時,我將複製的文件結尾,然後使腳本失敗,因爲您顯然不能擁有2個具有相同名稱的文件。我需要它重命名第一個,但刪除重命名相同的其他人。

這是我迄今爲止對我的IF語句,但它沒有工作,我得到和錯誤,說「類型不匹配:'FileExists」。我不知道如何讓這部分代碼以我想要的方式執行。任何幫助或建議將不勝感激。

dim infolder: set infolder = fso.GetFolder(IN_PATH) 
dim file 
for each file in infolder.files 

dim name: name = file.name 
dim parts: parts = split(name, ".") 
dim acct_, date_ 
acct_ = parts(0) 
date_ = parts(1) 


' file format of a.c.pdf 
if UBound(parts) = 2 then 
    ' rebuild the name with the 0th and 2nd elements 
    dim newname: newname = acct_ & "." & parts(2) 
    ' use the move() method to effect the rename 
    file.move fso.buildpath(OUT_PATH, newname) 

    if newname = FileExists(file.name) Then    
    newname.DeleteFile() 
    end if 
end if 

next 'file 

回答

12

你接近,你只需要嘗試過寫之前刪除的文件

dim infolder: set infolder = fso.GetFolder(IN_PATH) 
dim file: for each file in infolder.Files 

    dim name: name = file.name 
    dim parts: parts = split(name, ".") 

    if UBound(parts) = 2 then 

     ' file name like a.c.pdf  

     dim newname: newname = parts(0) & "." & parts(2) 
     dim newpath: newpath = fso.BuildPath(OUT_PATH, newname) 

     ' warning: 
     ' if we have source files C:\IN_PATH\ABC.01.PDF, C:\IN_PATH\ABC.02.PDF, ... 
     ' only one of them will be saved as D:\OUT_PATH\ABC.PDF 

     if fso.FileExists(newpath) then 
      fso.DeleteFile newpath 
     end if 

     file.Move newpath 

    end if 

next 
+0

薩爾曼A-我知道它必須是簡單的東西。我全力瞭解它,並沒有直視。奇蹟般有效。非常感激。 –

4

fileExists()FileSystemObject的方法,而不是全局範圍的功能。

您也有一個問題與刪除,DeleteFile()也就是FileSystemObject的方法。

此外,似乎你正在移動文件,然後試圖處理覆蓋問題,這是無序的。首先,您必須檢測名稱衝突,以便您可以選擇重命名文件或首先刪除衝突。我假設你出於某種原因想要繼續刪除新文件,直到找到最後一個,這似乎暗示了你的問題。

所以,你可以使用塊:

if NOT fso.FileExists(newname) Then 

    file.move fso.buildpath(OUT_PATH, newname)   

else 

    fso.DeleteFile newname 
    file.move fso.buildpath(OUT_PATH, newname) 

end if 

另外要注意的是與=標誌您的字符串比較是區分大小寫。使用strCmpvbText比較選項進行不區分大小寫的字符串比較。

+0

感謝您的答覆。我也測試了這一點,它的工作原理。 –

1
IF both POS_History_bim_data_*.zip and POS_History_bim_data_*.zip.trg exists in Y:\ExternalData\RSIDest\ Folder then Delete File Y:\ExternalData\RSIDest\Target_slpos_unzip_done.dat 
相關問題