我目前正在尝试在运行程序时自动删除程序文件。如果我在 Windows 中手动删除文件,程序会识别更改,但如果我使用脚本删除文件则不会。
但是,所有文件都会被删除。我尝试了一个 bat 和一个 vbs 脚本,手动和/或通过程序内部的调用执行脚本 - 总是得到相同的结果:识别手动删除,不识别脚本删除。我应该提到的是,我可以从 LUA 4.0 调用一个脚本/可执行文件,它会自动删除文件,这对我来说很重要。
如果我在 Windows 中删除文件到底会发生什么,它与通过脚本删除有什么不同?有没有办法 100% 模拟 Windows 删除程序?还是有一些我不知道的秘密“文件夹已更新”标志?自然文件夹属性DateLastAccessed
并DateLastModified
得到更新。
为了完整起见,这里是我的脚本(它们删除任何现有的适合*Random*.level
并删除空文件夹的文件):
蝙蝠:
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