我目前正在嘗試在運行程序時自動刪除程序的文件。如果我在Windows中手動刪除文件,程序確實會識別這些更改,但如果使用腳本刪除文件,則而不是。手動刪除和刪除腳本之間的區別? (蝙蝠或vbs)
但是,所有文件都被刪除。我嘗試了一個bat和一個vbs腳本,手動執行腳本和/或通過程序內的調用執行腳本 - 總是得到相同的結果:手動刪除被識別,腳本刪除沒有。我應該提到,我可以從LUA 4.0中調用一個腳本/可執行文件來自動刪除這些文件,這對我來說很重要。
如果我在Windows中刪除一個文件並且與腳本刪除有什麼不同,會發生什麼?有沒有辦法100%模仿windows刪除程序?或者是有一些祕密'文件夾更新'旗,我不知道?自然文件夾屬性DateLastAccessed
和DateLastModified
得到更新。
爲了完整起見,這裏是我的腳本(它們刪除任何現有的文件安裝到*Random*.level
和刪除空文件夾):
BAT:
REM delete all "Random" maps
del /S *Random*.level
REM remove empty folders
for /f "delims=" %%d in ('dir /S /B /A:D ^| sort /r') do rd "%%d"
VBS:
' create shell
Set objShell = CreateObject("Wscript.Shell")
' get current path
strPath = objShell.CurrentDirectory
' create file system object
Set oFSO = CreateObject("Scripting.FileSystemObject")
' delete all random level files
ProcessSubFolders oFSO.GetFolder(strPath)
Sub ProcessSubFolders(oFolder)
' get all files in the folder
Set cFiles = oFolder.Files
' for every file
For Each oFile In cFiles
' check if it's a level file and has "Random" in its name
If Right(oFile.Name, Len(".level")) = ".level" And InStr(oFile.Name, "Random") Then
' if true delete it
oFile.Delete
End If
Next
' process all subfolders in the same manner
For Each oSubFolder In oFolder.SubFolders
ProcessSubFolders oSubFolder
Next
' if folder is empty
If oFolder.SubFolders.Count = 0 And oFolder.Files.Count = 0 Then
' delete it
oFolder.Delete
End If
End Sub
這兩個腳本都應該像「手動」刪除一樣刪除文件。請發佈代碼,而不是「識別」刪除。 – 2013-03-21 14:28:57