niedziela, 7 września 2014

Skrypt kasujący stare pliki - VBS cz.11

Ostatnimi czasy w firmie musiałem pobawić się nieco w programistę, aby ułatwić sobie życie oraz ograniczyć stratę czasu na powtarzające się czynności.
Na maszynach produkcyjnych mamy kilkanaście komputerów sterujących ich pracą. Codziennie pojawiają się na nich dziesiątki plików w których znajdują się informacje techniczne potrzebne do produkcji okien.

Aby zaoszczędzić sobie spacerów po hali stworzyłem skrypt dzięki, któremu kasowane są tylko pliki z konkretnym rozszerzeniem, i tylko takie które mają więcej niż 90 dni.

Kasowanie plików zajmuje do około 60 minut w zależność od ich ilości, dzięki czemu w ciągu roku jesteśmy w stanie zaoszczędzić przy kasowaniu 2x w miesiącu 24h pracy.

1) Sprawdzamy, które maszyny działają

Poniższa funkcja sprawdza, które maszyny są online, ich numery IP są zapisywane w pliku tekstowym.
function ComputerOnline ()

Set WshShell = CreateObject("WScript.Shell")
Dim computerPing,iter, objFSO,objCreateTextFile,objTextFile
computerPing="10.10.10"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objCreateTextFile = objFSO.CreateTextFile("\\192.168.100.100\Skrypty\KasowaniePlikow\ComputerOnline.txt",True)
objCreateTextFile.Close

for iter = 21 To 26 Step 1 
PINGFlag = Not CBool(WshShell.run("ping -n 1 " & computerPing & "." & iter,0,True))
      If PINGFlag = True Then
        Set objTextFile = objFSO.OpenTextFile("\\192.168.100.100\Skrypty\KasowaniePlikow\ComputerOnline.txt",8) 
objTextFile.WriteLine "\\" & computerPing & "." & iter & "\fablist\"
objTextFile.Close
      Else
      
 cO=""
      ComputerOnline=cO
      End If
 
Next 

end Function






2) Kasowanie plików z maszyn online

Poniższa funkcja kasuje pliki, które znajdują się na komputerach, które w chwili się jego wykonywania  są włączone. Kasowane są tylko te, których data modyfikacji jest większa niż 90 dni poczynając od obecnej daty oraz posiadają rozszerzenie "fa1"  lub "FA1". Do tego w pliku Deleting.txt zapisują się logi, które przechowują numery skasowanych plików, datę kasowania oraz daty ostatniej ich modyfikacji.
Function Deleting()

Dim objFSO,objFolder,objFile,ModifiedDate,colFiles,FileName,p,howManyDays,wynik,computerName,strComputer
howManyDays=90
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("\\192.168.100.100\Skrypty\Deleting.txt",8) 
Set readFile = objFSO.OpenTextFile("\\192.168.100.100\Skrypty\ComputerOnline.txt",1) 
objTextFile.WriteLine "Kasowanie rozpoczete o: " & date() & " " & time()  

Do While readFile.AtEndOfStream <> True
    strComputer = readFile.ReadLine
objTextFile.WriteLine "" & strComputer

 Set objFolder = objFSO.GetFolder(strComputer)

 Set colFiles = objFolder.Files

  'Sprawdzenie kazdego pliku w katalogu
   For Each objFile in colFiles
    
'Rozbicie pliku na nazwe ...
FileName=objFile.Name 
' oraz date modyfikacji
ModifiedDate= objFile.DateLastModified
'Skasowanie plikow starszych niz xx dni
if ModifiedDate < date() - howManyDays and (objFSO.GetExtensionName(objFile.Name) = "fa1" or objFSO.GetExtensionName(objFile.Name) = "FA1") then
'Zapisanie do pliku nazwy pliku oraz daty modyfikacji 
objTextFile.WriteLine "" & FileName & ", " & ModifiedDate
'Skasowanie pliku    
objFSO.DeleteFile (strComputer & FileName) 
   else
    d=""
  Deleting = d  
   end if
Next
Loop
objTextFile.Close
readFile.Close
end Function



Brak komentarzy:

Prześlij komentarz