실제로 스크립트를 사용하여 zip 파일을 생성하지 못하는 문제가 있습니다.초보자 VBscript : 로그 파일을 압축하는 스크립트
C : 나는이 같은 설정 경로와 스크립트를 테스트 할 때 \ 사용자에게 \ 밥 \ 바탕 화면 \ 폴더 1 \ Folder2와 폴더 1에서 테스트 로그 파일과
나이가 7 일 경우 삭제되고, 폴더 2로 압축되어 이동하면 완벽하게 실행됩니다. 모든 로그 파일이 포함 된 zip 파일을 생성하고 적절한 이름 지정 세트를 갖습니다.
그래서 적어도 스크립트의 논리가 효과가 있다는 것을 알고 있습니다.
내 문제는이 스크립트가 시스템의 보안 로그를 거쳐 7 일 이상 지워진 다음 나머지가 압축되어 마운트 된 공유 드라이브로 보내야한다는 것입니다. 나는 같은 경로를 변경하는 경우 :
C : (로그가 있습니다) \ WINDOWS \ SYSTEM32 \ 구성
아직 나이가 7 일 모든 로그 파일을 삭제하지만, 그것은을 생성하지 않습니다 왼쪽에있는 파일이있는 zip 파일. 스크립트가 오류를 생성하지 않더라도 아무 일도하지 않습니다. 나는 내 코드를 다룰 때 운이 없다고 생각하고있다. 누군가 내가 가지고있는 것을 살펴보고 내가 잘못 떠난 곳을 알려 주면 매우 도움이 될 것입니다.
미리 감사드립니다. 스크립트는 아래에 있습니다.
'READ FIRST '----------------------------------------- -------------------------------------------------
'줄 14-53은 7 일이 지난 모든 로그 파일을 삭제합니다. "iDaysOld ="의 값을 변경하면 파일을 보관하거나 삭제할 시간 프레임이 변경됩니다. '파일을 지울 필요가없는 경우 스크립트의이 부분을 꺼낼 수 있으며 보관/이동 기능은 그대로 유지됩니다.
'줄 57-102에는 로그 파일을 압축하여 새 폴더. 압축 파일의 이름은 localhost 다음에 지정되며 날짜/시간 소인이 파일 이름에 추가됩니다.
'--------------------------------------------- ---------------------------------------------
Option Explicit
Dim oFSO, oFolder, sDirectoryPath
Dim oFileCollection, oFile, sDir
Dim iDaysOld
일 이전의 수
iDaysOld = 7
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sDirectoryPath)
Set oFileCollection = oFolder.Files
For each oFile in oFileCollection
을 삭제하는 파일 지정 '당신은 오래된 파일
sDirectoryPath = "C:\Windows\System32\config"
삭제하려면 어디에서 디렉토리 경로를 지정하는'확장 O를 지정 당신이 '와 파일 확장자
If LCase(oFSO.GetExtensionName(oFile.Name)) = "log" 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
WScript.Echo "Press to start zipping log files."
Dim objFile, objPath, objFolder, Command, PathLogs, RetVal
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objShell: Set objShell = CreateObject("WScript.Shell")
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)
에서 문자의 수와 숫자'로그가 로그를
PathLogs = "C:\Windows\System32\config"
'루프 위치 경로를 삭제할 및
을 압축 F 파일Set objPath = objFSO.GetFolder(PathLogs)
For Each objFile In objPath.Files
If (LCase(objFSO.GetExtensionName(objFile)) = "log") Then
' zip files
Command = """C:\Program Files\7-zip\7z.exe"" a " & PathLogs & "%computername%" & "-" & dateStr & "-" & timeStr & ".zip " & PathLogs & objFile.Name
RetVal = objShell.Run(Command,0,true)
End If
Next
WScript.Echo "Zip Successful."
WScript.Echo "Now Moving Zipped Files into Archived Folder"
'move files
Set objFSO = CreateObject("Scripting.FilesystemObject")
objFSO.MoveFile "C:\Windows\System32\config\*.zip" , "C:\Testscripts\testfolder\Archived"
WScript.Echo "Move Successful."
UAC 제한 사항이 적용될 수 있습니다. 다른 폴더 (c : \ windows 외부)에 zip 파일을 만들어서 파일이 제대로 만들어 지는지 확인하십시오. – Rodolfo
그게 처음에 생각한 것이지만, 보통 특권 오류를 반환하지 않습니까? 나는 vbs 파일에 "관리자 권한으로 실행"옵션을 추가하기 위해 레지스트리를 변경하고 시도했지만 여전히 운이 없다. 지금 당장은 경로에서 .log 파일을 찾은 다음 찾은 파일을 압축하도록 지시합니다. 이전에 .log 파일을 찾은 폴더에 zip을 기본값으로 설정했습니다. 나는 다른 곳에서 zip 파일을 생성하는 구문을 정확히 모르겠다. – parchambeau
-o like so ...'7z x archive.zip -oC : \ Doc' – Rodolfo