2012-07-12 2 views
1

목표 : 매일 폴더를 검사하는 VBScript를 실행하고 그 날에 파일이 저장되지 않았 으면보고합니다. 이전 날부터 존재하는 파일을 무시하십시오.VBScript - 파일이 오늘 생성되지 않을 때의 알림

시나리오 : 매일 3시에 C : \ Temp에 로그 파일이 만들어집니다. 이것은 시스템이 작업을 수행했다는 것을 알려주는 것입니다. 로그 파일이 생성되지 않으면 작업이 충돌합니다. 필자는 오늘 작성된 파일의 Temp 폴더를 확인하고 존재하지 않는 경우 전자 메일로 보내도록 작성했습니다. 지금까지

솔루션 :

option explicit 
dim fileSystem, folder, file 
dim path 
path = "C:\Temp" 

Set fileSystem = CreateObject("Scripting.FileSystemObject") 
Set folder = fileSystem.GetFolder(path) 

for each file in folder.Files  
    if file.DateLastModified > dateadd("h", -24, Now) then 
'WScript.Echo file.Name & " last modified at " & file.DateLastModified 
else 
SendEmail 
'WScript.Echo "this should have sent an email." 
    end if 
next 

Function SendEmail() 
'Send Email notification function here (this part works already) 
End Function 

문제 나는 데 : 나는 스크립트가 이전의 일에서 폴더에있는 파일을 무시하도록하는 방법 주위에 내 머리를 정리하고 수없는 것

.

제 테스트에서 나는 오늘 수정 된 파일과 7/10/12에 수정 된 파일을 가지고 C : \ Temp를 가지고 있습니다. 이 시나리오는 'then'및 'else'문과 모두 일치하기 때문에 둘 다 수행합니다.

난 그냥 루프에 약간의 수정이 필요하다고 생각합니다. - 오늘 날짜가 지정되지 않은 파일을 무시하십시오. - 오늘 파일이없는 경우 전자 메일을 보냅니다.

도움이 될 것입니다. 나는 그 대답을 '볼'수없는 것 같습니다.

답변

1

끝났습니다. 문제는 모든 단일 파일을 반복 검사하고 확인하는 것입니다. 하나의 파일이 존재하지 않는지 확인해야합니다. VBScript에 익숙하지 않아서 약간 조정할 필요가 있습니다. 그러나 내가 한 것은 found 변수를 추가하고 false으로 초기화했습니다. 지난 24 시간 이내에 생성 된 파일을 발견하면 true으로 설정하십시오. 당신이 반복을 완료하면 여전히 false 있다면, 어떤 파일이 지난 24 시간

option explicit 
dim fileSystem, folder, file 
dim path 
Dim found 
found = false 
path = "C:\Temp" 

Set fileSystem = CreateObject("Scripting.FileSystemObject") 
Set folder = fileSystem.GetFolder(path) 

for each file in folder.Files  
    if file.DateLastModified > dateadd("h", -24, Now) then 
    found = true 
    end if 
next 
if (found = false) then 
    SendEmail 
End If 


Function SendEmail() 
'Send Email notification function here (this part works already) 
End Function 
+0

그게 전부 였어! 방금 방아쇠가 필요했습니다 - 감사합니다! –

0

당신이 파일이 있음을 언급 이후 날짜 검사에서

둘째 시간을 제거하는 첫 번째 제안에 수정되지 않았다 매일 밤 나는 DateCreated를 확인하고 DateModified는 확인하지 않았다.

은 내가 다음 새 변수를보고 선

if file.DateCreated > myDate then 

을 변경 변수 희미한 MyDate가를 추가하려면 아래 코드를 수정 한 후 전날

Dim myDate 
myDate = dateadd("d", -1, FormatDateTime(Now, 2)) 

로 설정합니다.
echo 명령을 사용하여 실행하면 을 설명한대로 작동하고 오늘 작성된 파일 만 my에 알립니다.

option explicit 
dim fileSystem, folder, file 
dim path 
path = "C:\Temp" 
Set fileSystem = CreateObject("Scripting.FileSystemObject") 
Dim myDate 
myDate = dateadd("d", -1, FormatDateTime(Now, 2)) 
Set folder = fileSystem.GetFolder(path) 
for each file in folder.Files 
    if file.DateCreated > myDate then 
     'WScript.Echo file.Name & " last modified at " & file.DateCreated 
     SendEmail 
    'WScript.Echo "this should have sent an email." 
    end if 
next 

Function SendEmail() 
'Send Email notification function here (this part works already) 
End Function 
0

이 스크립트 :

Option Explicit 

    ' config data, fixed 
    Const csPATH = "..\data" 

    ' config data, computed, show use of DateValue() to cut off time 
    Dim dtCheck : dtCheck = DateValue(DateAdd("d", 0, Now)) 
    WScript.Echo "dtCheck:", dtCheck 

    Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject") 

    Dim bFound : bFound = False ' assume no up-to-date file found 
    Dim oFile 
    For Each oFile In oFS.GetFolder(csPATH).Files 
     WScript.Echo "Check:", DateValue(oFile.DateLastModified), oFile.Name 
     If DateValue(oFile.DateLastModified) = dtCheck Then 
     WScript.Echo "Found:", DateValue(oFile.DateLastModified), oFile.Name 
     WScript.Echo "no need for further loopings" 
     bFound = True 
     Exit For 
     End If 
    Next 
    If Not bFound Then 
    WScript.Echo "Sending email ..." 
    End If 

출력 1 :

dtCheck: 12.07.2012 
Check: 11.07.2012 11434579.kpf 
Check: 11.07.2012 11434579.notes 
Check: 11.07.2012 11434579-UE15.prj 
Sending email ... 

2 출력 :

dtCheck: 12.07.2012 
Check: 11.07.2012 11434579.kpf 
Check: 11.07.2012 11434579.notes 
Check: 11.07.2012 11434579-UE15.prj 
Check: 12.07.2012 11458011.notes 
Found: 12.07.2012 11458011.notes 
no need for further loopings 

은 즉시 루프를 종료/파괴에 의한 고스트의 접근 방식에 확장 a/최신 파일을 찾았습니다. 루프에있는 확인 날짜의 재 계산 (휘발성 Now! 기반) 및 작성하지 않은 코드의 중요성을 보여줍니다 (예 : Set folder = ..., If (found = false) ..).