2013-03-04 78 views
0

我是VBS的新手,嘗試從目錄中遞歸刪除只讀屬性。VBS刪除只讀屬性recursivelty

它刪除文件的只讀屬性,但不刪除目錄。此外,這些目錄內的文件似乎已經丟失了相關的程序鏈接,現在都顯示爲未註冊的文件類型。任何幫助是極大的讚賞。

更新:我可以看到爲什麼文件現在失去了它們的關聯。這是因爲。將名稱與擴展名分隔的名稱已被刪除!衛生署!理想情況下,我只想重命名文件名。

re.Pattern = "[_.]" 
re.IgnoreCase = True 
re.Global = True 

RemoveReadonlyRecursive("T:\Torrents\") 

Sub RemoveReadonlyRecursive(DirPath) 
    ReadOnly = 1 
    Set oFld = FSO.GetFolder(DirPath) 

    For Each oFile in oFld.Files 
     If oFile.Attributes AND ReadOnly Then 
      oFile.Attributes = oFile.Attributes XOR ReadOnly 
     End If 
     If re.Test(oFile.Name) Then 
      oFile.Name = re.Replace(oFile.Name, " ") 
     End If 
    Next 
    For Each oSubFld in oFld.SubFolders 
     If oSubFld.Attributes AND ReadOnly Then 
      oSubFld.Attributes = oSubFld.Attributes XOR ReadOnly 
     End If 
     If re.Test(oSubFld.Name) Then 
      oSubFld.Name = re.Replace(oSubFld.Name, " ") 
     End If 

     RemoveReadonlyRecursive(oSubFld.Path) 
    Next 

End Sub 

回答

3

看起來你想通過腳本自動執行可重複的動作。你爲什麼不使用attrib命令來爲你做的:

attrib -r "T:\Torrents\*.*" /S 

可以放置在一個批處理文件,如果你想將它連接到一個可點擊的圖標。

編輯: 使用VBScript默默地運行它:

Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run "attrib -r ""T:\Torrents\*.*"" /S", 0, true) 

EDIT2: 要更換一切,除了最後階段,使用正則表達式,如:

filename = "my file.name.001.2012.extension" 
Set regEx = New RegExp 
' Make two captures: 
' 1. Everything except the last dot 
' 2. The last dot and after that everything that is not a dot 
regEx.Pattern = "^(.*)(\.[^.]+)$"  ' Make two captures: 

' Replace everything that is a dot in the first capture with nothing and append the second capture   
For each match in regEx.Execute(filename) 
    newFileName = replace(match.submatches(0), ".", "") & match.submatches(1) 
Next 
+0

這聽起來像一個偉大的的想法,但除了上述腳本,腳本還多一點,我試圖避免命令提示符窗口。 – 2013-03-04 15:26:59

+0

我添加了一個腳本從VBScript靜默運行它。它會一直等到命令準備就緒後,如果您想繼續使用腳本(並且不想等待),請將最後一個參數從「true」更改爲「false」。 – AutomatedChaos 2013-03-04 15:32:05

+0

這不是賄賂,是嗎?搜索模式最好用正則表達式來完成。我在第二次編輯中添加了代碼。請享用! (這是一個對現在被刪除的評論的迴應,這是關於如何替換文件名中的所有句點而沒有最後一個擴展名) – AutomatedChaos 2013-03-04 16:20:38