VBScript适用于Windows 7 Professional,而不适用于Windows Home Premium

时间:2012-06-29 16:14:14

标签: vbscript zip admin uac

我的脚本的作用是,首先检查C:\ Windows \ System32 \ winevt \ Logs中的任何存档事件文件是否超过7天。如果它们删除它们。

它做的第二件事是任何剩余的Archive * .evtx文件(超过7天的文件)它将压缩并发送到您指定的任何路径。

现在我的问题在于我的桌面运行Windows 7专业版,并且在我对其进行最后润色时,该脚本昨晚运行100%正确。现在我的笔记本电脑运行的是Windows Home Premium,因此今天在尝试从我的笔记本电脑运行脚本时突然无法正常工作。

它会使zip文件在正确的路径中,但它实际上不会在zip文件中放入任何内容。

现在在家我必须以管理员身份运行脚本才能让它工作,这需要我进行在线发现的注册表编辑,甚至在右键单击.vbs文件时添加“以管理员身份运行”按钮。 (很奇怪,这已经没有了,但无论如何)

所以我在笔记本电脑上做了同样的编辑,试图再次运行它,同样的事情发生了。在正确的路径中清空zip文件。

接下来,我发现UAC搞砸了一些事情。所以我在我的笔记本电脑上关闭了UAC,然后以管理员身份运行,但它仍然遇到了同样的问题。在家里,我的UAC仍处于打开状态,脚本正常运行,因此我不确定问题是什么。

然后我想可能在我的笔记本电脑上我遇到了C:驱动器的权限问题或类似的奇怪事情。所以我打开cmd作为管理员并运行“takeown”以确保管理员允许访问该驱动器。

然后再次运行脚本,仍遇到同样的问题。

我现在的想法是为什么它不能运行,当我下班回家时我将再次在我的桌面上尝试它,看看它是否仍然有效。 (应该,我没有对剧本做任何修改)

如果有人能帮助我,那将是惊人的。我希望能在今天完成这一切,并将其设置为计划任务,以便它开始运行,但它似乎想让我遇到更多问题。

脚本如下:


Option Explicit

Dim oFSO, oFolder, sDirectoryPath, sDestinationPath, sOutputFilename, Shell, sFileExt,     sFilePrefix
Dim oFileCollection, oFile, sDir 
Dim iDaysOld 


Set Shell = WScript.CreateObject("WScript.Shell")
'Specify Directory Path From Where You want to clear the old files 'Also where you want destination for zip
sDirectoryPath = "C:\Windows\System32\winevt\Logs\"
sDestinationPath = "C:\Script\files\outzips\"
sOutputFilename = shell.ExpandEnvironmentStrings("%COMPUTERNAME%")
sFileExt = ".evtx"
sFilePrefix = "Archive*"
' Specify Number of Days Old File to Delete
iDaysOld = 7

Set oFSO = CreateObject("Scripting.FileSystemObject") 
Set oFolder = oFSO.GetFolder(sDirectoryPath) 
Set oFileCollection = oFolder.Files 

For each oFile in oFileCollection
'Specify the Extension of file that you want to delete 'and the number with Number of character in the file extension
If LCase(oFSO.GetExtensionName(oFile.Name)) = ".evtx" Then

    If oFile.DateLastModified < (Date() - iDaysOld) Then 
    oFile.Delete(True) 
    End If 

End If   
Next 



Set oFSO = Nothing 
Set oFolder = Nothing 
Set oFileCollection = Nothing 
Set oFile = Nothing 




Dim Command, RetVal
Dim d : d = Date() 
Dim dateStr : dateStr = Year(d) & "-" & Right("00" & Month(d), 2) & "-" & Right("00" &     Day(d), 2)
Dim t : t = Time()
Dim timeStr: timeStr = Hour(t) & "-" & Right("00" & Minute(t), 2) & "-" & Right("00" & Second(t), 2)



Command = """C:\Program Files\7-zip\7z.exe"" a  " & sDestinationPath & sOutputFilename & "-" & dateStr & "-" & timeStr & ".zip " & sDirectoryPath & sFilePrefix & sFileExt


        RetVal = Shell.Run(Command,0,true)

1 个答案:

答案 0 :(得分:0)

Ahum ..可能是文件夹C:\ Windows \ System32 \ winevt \ Logs中没有Archive * .evtx这样的文件吗?通常没有,我想在你的桌面上出于任何原因有脚本在那里工作。 尝试在命令=“....”之后放置一个wscript.echo并尝试在控制台上运行它。在那里,更容易找出命令没有运行的原因,如果它运行的机会很高,它也会在你的脚本中运行。