2012-06-28 3 views
0

실제로 스크립트를 사용하여 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." 
+0

UAC 제한 사항이 적용될 수 있습니다. 다른 폴더 (c : \ windows 외부)에 zip 파일을 만들어서 파일이 제대로 만들어 지는지 확인하십시오. – Rodolfo

+0

그게 처음에 생각한 것이지만, 보통 특권 오류를 반환하지 않습니까? 나는 vbs 파일에 "관리자 권한으로 실행"옵션을 추가하기 위해 레지스트리를 변경하고 시도했지만 여전히 운이 없다. 지금 당장은 경로에서 .log 파일을 찾은 다음 찾은 파일을 압축하도록 지시합니다. 이전에 .log 파일을 찾은 폴더에 zip을 기본값으로 설정했습니다. 나는 다른 곳에서 zip 파일을 생성하는 구문을 정확히 모르겠다. – parchambeau

+0

-o like so ...'7z x archive.zip -oC : \ Doc' – Rodolfo

답변

0

필자는 7zip 명령 줄을 반향 출력하여 스크립트가 실행되는 위치와 동일한 위치에서 수동으로 실행되는지 확인합니다. 그것을 보거나 7zip이 무슨 일이 일어나고 있는지 알려주는 메시지를 줄 때 잘못 보일 수 있습니다.

+0

명령 줄에서 실행할 때 : C : \> "\ Program Files \ 7-Zip \ 7z.exe"ac : \ Windows \ Systems32 \ config \! * .log 반환되는 액세스가 많습니다. 여러 파일에 대한 값. "오류로 인해 471 개의 파일을 찾을 수 없습니다" "오류 7-Zip은 C : \ Windows \ System32 \ config \! * .log 파일을 열 수 없습니다."파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문은 다음과 같습니다. 틀린 오류 시스템 오류 : 지정되지 않은 오류입니다. 따라서 UAC 문제 일 수 있습니다. – parchambeau

+0

느낌표는 와일드 카드 기호 또는 파일 이름의 첫 번째 문자로되어 있습니까? 문제의 원인이 될지 확실하지 않습니다. – wizzardmr42

관련 문제