Dateigrössen vergleichen
Programmsprache VBS
Hi Leute,
ich armer Systemtechniker verzweifle an dieser Aufgabe...
Folgendes:
Mir werden Täglich die DHCP Files in einen Ordner als .txt Dateien exportiert. Dieser Vorgang geht ab und zu schief, d.h
Normalerweise unterscheiden sich die Files um wenige KB + - 5. Wenn der Vorgang jedoch schief geht dann unterscheiden sich die Dateien
um mehrere KB + - 50KB.
Ich habe das Ganze programmiert, aber ich schaffe es nicht alle Bedingungen zu berücksichtigen.
Leider funktioniert mein Skript nicht, wenn die neue Datei 50Kb grösser als die alte Datei ist, wie kann ich das auch noch filtern? Programmiert habe ich es mit VBS
' Name: delte_dhcp_error.vbs
' Author: idkfa2k7
' Version: 2.0
Option Explicit
Dim varPos,sizeOld, sizeNew, diffOldNew, diffOldNewNeg
Dim fileOld, fileNew, fileCopy
Dim fso, file, objfs
Const ForReading = 1
' in Bytes. Tolleranz Grössendifferenz der letzten 2 Tagesfiles (Dient zur Sicherung von Fehlexporten)
varPos = 50*1024
' Berechnung von Diffenrenz diffOldNew (altem und neuem File)
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\Temp\export\dhcp_sav" & Date()-1 & ".txt")
sizeOld = file.Size
Set file = fso.GetFile("C:\Temp\export\dhcp_sav" & Date() & ".txt")
sizeNew = file.Size
Set file = Nothing
Set fso = Nothing
diffOldNew = sizeOld - sizeNew
'Dies sind die Dateien welche in die lokale Datei gespeichert wird
fileOld = "C:\Temp\export\dhcp_sav" & Date()-1 & ".txt"
fileNew = "C:\Temp\export\dhcp_sav" & Date() & ".txt"
fileCopy = "C:\Temp\dhcp_imp.txt"
'Überprüft ob das Filedelta kleiner, grösser oder gleich, dann wirder Import über aktuelle Datei ausgeführt_
'ansonsten wird die Version vom Tag zuvor genmommen
If diffOldNew <= varPos Then
Set objfs = CreateObject("Scripting.FileSystemObject")
objfs.CopyFile fileNew, fileCopy, True
MsgBox("Es wurde eine Kopie von heute erstellt")
Else
Set objfs = CreateObject("Scripting.FileSystemObject")
objfs.CopyFile fileOld, fileCopy, True
MsgBox("Es wurde die Kopie vom Tag zuvor verwendet")
End If
Danke für eure Hilfe
Hi Leute,
ich armer Systemtechniker verzweifle an dieser Aufgabe...
Folgendes:
Mir werden Täglich die DHCP Files in einen Ordner als .txt Dateien exportiert. Dieser Vorgang geht ab und zu schief, d.h
Normalerweise unterscheiden sich die Files um wenige KB + - 5. Wenn der Vorgang jedoch schief geht dann unterscheiden sich die Dateien
um mehrere KB + - 50KB.
Ich habe das Ganze programmiert, aber ich schaffe es nicht alle Bedingungen zu berücksichtigen.
Leider funktioniert mein Skript nicht, wenn die neue Datei 50Kb grösser als die alte Datei ist, wie kann ich das auch noch filtern? Programmiert habe ich es mit VBS
' Name: delte_dhcp_error.vbs
' Author: idkfa2k7
' Version: 2.0
Option Explicit
Dim varPos,sizeOld, sizeNew, diffOldNew, diffOldNewNeg
Dim fileOld, fileNew, fileCopy
Dim fso, file, objfs
Const ForReading = 1
' in Bytes. Tolleranz Grössendifferenz der letzten 2 Tagesfiles (Dient zur Sicherung von Fehlexporten)
varPos = 50*1024
' Berechnung von Diffenrenz diffOldNew (altem und neuem File)
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.GetFile("C:\Temp\export\dhcp_sav" & Date()-1 & ".txt")
sizeOld = file.Size
Set file = fso.GetFile("C:\Temp\export\dhcp_sav" & Date() & ".txt")
sizeNew = file.Size
Set file = Nothing
Set fso = Nothing
diffOldNew = sizeOld - sizeNew
'Dies sind die Dateien welche in die lokale Datei gespeichert wird
fileOld = "C:\Temp\export\dhcp_sav" & Date()-1 & ".txt"
fileNew = "C:\Temp\export\dhcp_sav" & Date() & ".txt"
fileCopy = "C:\Temp\dhcp_imp.txt"
'Überprüft ob das Filedelta kleiner, grösser oder gleich, dann wirder Import über aktuelle Datei ausgeführt_
'ansonsten wird die Version vom Tag zuvor genmommen
If diffOldNew <= varPos Then
Set objfs = CreateObject("Scripting.FileSystemObject")
objfs.CopyFile fileNew, fileCopy, True
MsgBox("Es wurde eine Kopie von heute erstellt")
Else
Set objfs = CreateObject("Scripting.FileSystemObject")
objfs.CopyFile fileOld, fileCopy, True
MsgBox("Es wurde die Kopie vom Tag zuvor verwendet")
End If
Danke für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 81981
Url: https://administrator.de/contentid/81981
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
3 Kommentare
Neuester Kommentar
Kleiner Logik-Fehler:
diffOldNew = sizeOld - sizeNew
Wenn die neue Datei größer ist, als die alte, dann bekommst Du einen negativen Wert, durch den
diffOldNew <= varPos
immer true ist.
Kenn mich nicht so sehr mit VB aus, Du brauchst entweder eine Funktion, die Dir den Betrag von diffOldNew zurück gibt, oder Du umgehst es mit:
diffOldNew = sizeOld - sizeNew
if diffOldNew < 0 Then
diffOldNew = diffOldNew * 1
End If
diffOldNew = sizeOld - sizeNew
Wenn die neue Datei größer ist, als die alte, dann bekommst Du einen negativen Wert, durch den
diffOldNew <= varPos
immer true ist.
Kenn mich nicht so sehr mit VB aus, Du brauchst entweder eine Funktion, die Dir den Betrag von diffOldNew zurück gibt, oder Du umgehst es mit:
diffOldNew = sizeOld - sizeNew
if diffOldNew < 0 Then
diffOldNew = diffOldNew * 1
End If