Detail: VBS - Kopieren einer Datei nach Versionsprüfung eines Folder

02.04.2010 - VBS - Kopieren einer Datei nach Versionsprüfung eines Folder

Durch einen Kundenauftrag bekam ich die Aufgabe, eine Datei nur dann in ein lokales Verzeichnis zu kopieren, wenn eine neuere Version vorliegt. Das folgende Beispielscript prüft zunächst die Verfügbarkeit des Quellordners respektive ob eine Quelldatei vorhanden ist. Ferner wird mittels Registry-Eintrag geprüft, ob eine neuere Dateiversion vorliegt. Sollte dies der Fall sein, wird die Quelldatei und das Zielverzeichnis kopiert.

' Heiko Jendreck - personal helpdesk & webdesign
' http://www.phw-jendreck.de
' 2010.04.02 Vers 2.0
'
' AutoSync.vbs
' ====================
' Dienst, welcher eine Dateivorlage auf ein Zielverzeichnis (lokaler Arbeitsplatz) kopiert.
' Es erfolgt eine Prüfung vom Vorlagen-Unterverzeichnis, ob dieses neuer ist, als die
' zuletzt verwendete Dateiversion.

' ****************************************************************************************
' Hinweis
' Für einen Testdurchlauf benötigen wir eine Datei mit dem Namen "cdr0.txt", welche
' im Laufwerk D:\ und dort in einem jeweiligen Versionsordner angelegt wird.

Option Explicit
Dim sDateiName, sQuellordner, sZielordner, sRegKey

'###############################################################################
' Start
' ab hier werden die Parameter eingetragen
'###############################################################################


sDateiName = "cdr0.txt"' Name der Vorlagendatei
sQuellordner = "d:\1"' Name des Quellordners
sZielordner = "d:\2"' Name des Zielordners
sRegKey = "HKCU\Datenversion\"' Name der Dateiversion, abgelegt in der Registry

'###############################################################################
' Ende der Parametereingabe
'###############################################################################

Dim oFSO, oOrdner, oUnterordner, sVersion, WshShell

Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set oOrdner = oFSO.GetFolder(sQuellordner)
If oOrdner.SubFolders.count = 0 Then
MsgBox "Das Quell-Verzeichnis '" & sQuellordner & _
"' enthält keine Versions-Unterordner.", vbCritical, _
"Fehlende Installationsvorlage für " & sDateiName
WScript.Quit(0)
End If
For Each oUnterordner In oOrdner.SubFolders
If oUnterordner.name > sVersion Then
sVersion = oUnterordner.Name
End If
Next

Set WshShell = WScript.CreateObject("WScript.Shell")

On Error Resume Next 'Registry-Key evtl. noch nicht vorhanden
If WSHShell.RegRead(sRegKey & sDateiName & "\") < sVersion Then
WshShell.RegWrite sRegKey & sDateiName & "\", sVersion

On Error Goto 0

If oFSO.FileExists (sQuellordner & "\" & sVersion & "\" & sDateiName) Then
Msgbox "Sie erhalten automatisch eine neue Version von '" & sDateiName & _
"' Version " & sVersion, vbInformation, "Nachricht"
oFSO.CopyFile sQuellordner & "\" & sVersion & "\" & sDateiName, _
sZielordner & "\" & sDateiName, True
Else
Msgbox "Die Datei '" & sDateiName & "' ist nicht im Quell-Verzeichnis '" & _
sQuellordner & "\" & sVersion & "' enthalten.", vbCritical, _
"Fehlende Quell-Datei " & sDateiName
End If
End If

zurück

Copyright © 2003 - 2011, Heiko Jendreck, All rights reserved
http://www.phw-jendreck.de / Heiko Jendreck; Friedrichstrasse 20; 68782 Brühl