如果其中一个文件夹不存在,那么我之前就可以正常工作了,除了收到错误,所以我试着修复它。搜索了一段时间(尽我所能在工作中)寻找解决方案并尝试了不同的方法,仍然没有运气,我的IT门票正在堆积工作,哈哈,哇哦。感谢您提供的任何帮助。在第60行60字符处获得语法错误,再次感谢。
Option Explicit
Dim objFSO, Folder1, Folder2, Folder3, zipFile
Dim ShellApp, zip, oFile, CurDate, MacAdd, objWMIService
Dim MyTarget, MyHex, MyBinary, i, strComputer, objItem, FormatMAC
Dim oShell, oCTF, CurDir, scriptPath, oRegEx, colItems
Dim FoldPath1, FoldPath2, FoldPath3, foldPathArray
Const FOF_SIMPLEPROGRESS = 256
'Grabs MAC from current machine
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objItem in colItems
MacAdd = objItem.MACAddress
Next
'Finds the pattern of a MAC address then changes it for
'file naming purposes. You can change the FormatMAC line of the code
'in parenthesis where the periods are, to whatever you like
'as long as its within the standard file naming convention
Set oRegEx = CreateObject("VBScript.RegExp")
oRegEx.Pattern = "([\dA-F]{2}).?([\dA-F]{2}).?([\dA-F]" _
& "{2}).?([\dA-F]{2}).?([\dA-F]{2}).?([\dA-F]{2})"
FormatMAC = oRegEx.Replace(MacAdd, "$1.$2.$3.$4.$5.$6")
'Gets current date in a format for file naming
'Periods can be replaced with anything that is standard to
'file naming convention
CurDate = Month(Date) & "." & Day(Date) & "." & Year(Date)
'Gets path of the directory where the script is being ran from
Set objFSO = CreateObject("Scripting.FileSystemObject")
scriptPath = Wscript.ScriptFullName
Set oFile = objFSO.GetFile(scriptPath)
CurDir = objFSO.GetParentFolderName(oFile)
'where and what the zip file will be called/saved
MyTarget = CurDir & "\" & "IRAP_LOGS_" & CurDate & "_" & FormatMAC & ".zip"
'Actual creation of the zip file
MyHex = Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0)
For i = 0 To UBound(MyHex)
MyBinary = MyBinary & Chr(MyHex(i))
Next
Set oShell = CreateObject("WScript.Shell")
Set oCTF = objFSO.CreateTextFile(MyTarget, True)
oCTF.Write MyBinary
oCTF.Close
Set oCTF = Nothing
wScript.Sleep(3000)
folder1 = True
folder2 = True
folder3 = True
'Adds folders to the zip file created earlier
'change these folders to whatever is needing to be copied into the zip folder
'Folder1
If not objFSO.FolderExists("C:\Windows\Temp\SMSTSLog") and If not objFSO.FolderExists("X:\Windows\Temp\SMSTSLog") then
Folder1 = false
End If
If objFSO.FolderExists("C:\Windows\Temp\SMSTSLog") Then
Folder1 = "C:\Windows\Temp\SMSTSLog"
Set FoldPath1 = objFSO.getFolder(Folder1)
Else
Folder1 = "X:\windows\Temp\SMSTSLog"
Set FoldPath1 = objFSO.getFolder(Folder1)
End If
'Folder2
If not objFSO.FolderExists("C:\Windows\System32\CCM\Logs") and If not objFSO.FolderExists("X:\Windows\System32\CCM\Logs") then
Folder2 = false
End If
If objFSO.FolderEXists("C:\Windows\System32\CCM\Logs") Then
Folder2 = "C:\Windows\System32\CCM\Logs"
Set FoldPath2 = objFSO.getFolder(Folder2)
Else
Folder2 = "X:\Windows\System32\CCM\Logs"
Set FoldPath2 = objFSO.getFolder(Folder2)
End If
'Folder3
If not objFSO.FolderExists("C:\Windows\SysWOW64\CCM\Logs") and If not objFSO.FolderExists("X:\Windows\SysWOW64\CCM\Logs") then
Folder3 = false
End If
If objFSO.FolderExists("C:\Windows\SysWOW64\CCM\Logs") Then
Folder3 = "C:\Windows\SysWOW64\CCM\Logs"
set FolderPath3 =objFSO.getFolder(Folder3)
Else
Folder3 = "X:\Windows\SysWOW64\CCM\Logs"
Set FoldPath3 = objFSO.getFolder(Folder3)
End If
set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.OpenTextFile(MyTarget, 2, True).Write "PK" & Chr(5) & Chr(6) _
& String(18, Chr(0))
Set ShellApp = CreateObject("Shell.Application")
Set zip = ShellApp.NameSpace(MyTarget)
'checks if files are there before trying to copy
'otherwise it will error out
If folder1 = True And FoldPath1.files.Count >= 1 Then
zip.CopyHere Folder1
End If
WScript.Sleep 3000
If folder2 = true And FoldPath2.files.Count >= 1 Then
zip.CopyHere Folder2
End If
WScript.Sleep 3000
If folder3 = true And FoldPath3.files.Count >= 1 Then
zip.CopyHere Folder3
End If
WScript.Sleep 5000
set ShellApp = Nothing
set ZipFile = Nothing
Set Folder1 = Nothing
Set Folder2 = Nothing
Set Folder3 = Nothing
createobject("wscript.shell").popup "Zip File Created Successfully", 3
答案 0 :(得分:1)
我认为。第60行是:
If not objFSO.FolderExists("C:\Windows\Temp\SMSTSLog") and If not objFSO.FolderExists("X:\Windows\Temp\SMSTSLog") then
结合条件应如下所示:
If somecondition And othercondition Then
所以删除第二个/嵌入式“If”。
答案 1 :(得分:0)
您可以使用此逻辑更改这些块Not A And Not B
等于Not (A Or B)
:
Folder1 = Not (objFSO.FolderExists("C:\Windows\Temp\SMSTSLog") Or _
objFSO.FolderExists("X:\Windows\Temp\SMSTSLog"))
Folder2 = Not (objFSO.FolderExists("C:\Windows\System32\CCM\Logs") Or _
objFSO.FolderExists("X:\Windows\System32\CCM\Logs"))
Folder3 = Not (objFSO.FolderExists("C:\Windows\SysWOW64\CCM\Logs") Or _
objFSO.FolderExists("X:\Windows\SysWOW64\CCM\Logs"))
您还有Set FolderPath3 = objFSO.getFolder(Folder3)
FolderPath3
以后不再使用。它应该是Set FoldPath3 = objFSO.getFolder(Folder3)
。