16 Haziran 2015 Salı

Vbscript ile dizinler içinde dosya varlık kontolü- örnek arşivleme klasörlerinde eksik olan günü bulma


  Bir arşivleme programı  veritabanından hergün o güne ait verileri   yilaygün.arsiv.zip  isimlendirme formatında    \yıl\ay\   formatında klasör yapısında diske yazmaktadır.

Ancak yıllar içinde bazı günler  çalışmamış ise eksik arşivler bulunabilir.

Bu kadar klasör içinde hangi günün arşivi eksik bulmak için bir vbscript paylaşılacaktır.


dosyalar  D:\Arsivleme\  klasöründe   her yıla ait bir klasör ve her yıl klasöründe her aya ait bir klasör ve her ay klasöründe   hergüne ait   yilaygün.Arsiv.zip  formatında o günün arşivi depolanmaktadır.

Örnek olarak;

    16 haziran 2015 gününün arşivi

    D:\Arsivleme\2015\6\20150616.Arsiv.zip    

şeklinde  saklanmaktadır.

Mevcut durumda   21.12.2012 gününe ait arşiv de başlanarak bugünün tarihine kadar kontrol yapılacaktır.  başlama ve bitiş script içinden ayarlanabilir.




dim yil
dim ay
dim gun
dim s_ay
dim s_gun
dim Afile



Set oShell = CreateObject("WScript.Shell")
Set ofso = CreateObject("Scripting.FileSystemObject")
fld = oFSO.GetParentFolderName(Wscript.ScriptFullName)


Set objFile = oFSO.CreateTextFile(fld & "\log.txt")

set objFile = nothing
set objFolder = nothing
' OpenTextFile Method needs a Const value
' ForAppending = 8 ForReading = 1, ForWriting = 2
Const ForAppending = 8
Const  ForWriting=2

Set objTextFile = oFSO.OpenTextFile (fld & "\log.txt", ForWriting,True)


' aramanın başlayacağı tarih: klasör
yil=2012
ay=12
gun=21


do while 1=1

'20121221.Events


if ay<10 then
   s_ay="0" & ay
 else
   s_ay=ay
end if

if gun<10 then
  s_gun="0" & gun
 else
   s_gun=gun
end if



''    20150601.Arsiv.zip  
Afile= yil & s_ay & s_gun & ".Arsiv.zip"




pth="D:\Arsivleme\" & yil  & "\" & ay & "\" & Afile

If Not oFSO.FileExists(pth) Then


   objTextFile.WriteLine(AFile)

End if

gun=gun+1
dt=ay  & "/" & gun & "/" & yil

if not isdate(dt) then

  gun=1
  ay=ay+1
  if ay>12 then
    ay=1
    yil=yil+1
  end if

end if



 dt=ay  & "/" & gun & "/" & yil


  ' debug için
 ' if yil=2015 and ay=4 then

 '     msgbox day(dt) & " " & month(dt)  & " " & year(dt)
 ' end if
 

   ' aramanın biteceği gün : bugün istenirse burada farklı bir gün ay yıl verilebilir..
  if (day(dt)=day(now) and month(dt)=month(now) and year(dt)=year(now)) then
    msgbox "Kontrol bitti. Log.txt dosyasina bakiniz."
    exit do
   end if



loop


objTextFile.Close

set objFile = nothing
set objFolder = nothing
set oFSO=nothing

Hiç yorum yok: