Vbscript - Konfig in ini-Datei auslagern
Hallo,
Ich habe mir ein kleines VBscript gepastelt, das mittels Robocopy Ordner von einem Netzlaufwerk auf die Festplatte kopiert.
Die Ordner die zu kopieren sind stehen in der Datei folder.txt
Das Script so wie es hier ist funktioniert soweit gut, nun möchte ich dies aber noch erweitern.
Dies sind meine ersten versuche mit VBscript, gibt es irgenwelche Fehler/ No Goes drin?
Am liebsten würde ich die Variblendefinition (strRobopath, strTargetRoot, strParameter) in eine ini-Datei auslagern am liebsten in mit den zu kopierenden Ordnern.
Habt ihr Vorschläge wie ich das am besten lösen könnte?
Die Ordner-Liste soll erweiterbar sein.
folder.txt momentan
Ich habe mir ein kleines VBscript gepastelt, das mittels Robocopy Ordner von einem Netzlaufwerk auf die Festplatte kopiert.
Die Ordner die zu kopieren sind stehen in der Datei folder.txt
Das Script so wie es hier ist funktioniert soweit gut, nun möchte ich dies aber noch erweitern.
Dies sind meine ersten versuche mit VBscript, gibt es irgenwelche Fehler/ No Goes drin?
Am liebsten würde ich die Variblendefinition (strRobopath, strTargetRoot, strParameter) in eine ini-Datei auslagern am liebsten in mit den zu kopierenden Ordnern.
Habt ihr Vorschläge wie ich das am besten lösen könnte?
Die Ordner-Liste soll erweiterbar sein.
Option Explicit
Dim objFileSystem
Dim objFile
Dim objWshShell
Dim strConfigFile, strProgDir, strConfigName
Dim strLine, arrDirLine
Dim strRobopath, strSource, strTargetRoot, strTarget, strTargetDir, strParameter
Const DbQuote = """"
Const ForReading = 1
'Variablen definieren
strRobopath = "C:\Robo\robocopy.exe"
strTargetRoot = "C:\Robo\biblio\"
strParameter = "/mir /NDL /NFL /NJH /NJS"
strConfigName = "folder.txt"
'Aktuelles Verzeichnis auslesen
Set strProgDir = CreateObject("WScript.Shell")
strConfigFile = strProgDir.CurrentDirectory & "\" & strConfigName
Set objWshShell = CreateObject("Wscript.Shell")
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
'Config-Datei ermitteln
If objFileSystem.FileExists(strConfigFile) Then
'Config-Datei öffnen
Set objFile = objFileSystem.OpenTextFile(strConfigFile, ForReading, False)
'Config-Datei abarbeiten
do while not objFile.AtEndOfStream
strLine=objFile.Readline
arrDirLine=Split(strLine,";")
strSource = arrDirLine(0)
strTargetDir = arrDirLine(1)
strSource = DbQuote & strSource & DbQuote
strTarget = DbQuote & strTargetRoot & strTargetDir & DbQuote
objWshShell.Run(strRobopath & " " & strSource & " " & strTarget & " " & strParameter)
Loop
objFile.Close
else
MsgBox "Die Config-Datei " & strConfigFile & " ist nicht vorhanden!", vbCritical, "Fehler"
end if
folder.txt momentan
T:\biblio\VisioXP;VisioXP
T:\biblio\OfficeXP;OfficeXP
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101753
Url: https://administrator.de/forum/vbscript-konfig-in-ini-datei-auslagern-101753.html
Ausgedruckt am: 23.12.2024 um 17:12 Uhr
4 Kommentare
Neuester Kommentar
Hallo bdeath!
Vielleicht als Denkanstoß:
Variablendeklarationen sehe ich in VBScript nicht ganz so eng (die Unmöglichkeit, einen Typ für die Variable anzugeben, lässt mich vermuten, dass auch MS sie nicht ganz so ernst nimmt ) - mit "Option Explicit" sind sie während der Testphase zwar recht nützlich, aber im fertigen Script kann ich dann auch gut darauf verzichten.
Grüße
bastla
Vielleicht als Denkanstoß:
strVars = "#strRobopath#strTargetRoot#strParameter#strConfigName#"
strParamFile = "C:\Params.txt"
'Parameter festlegen
strRobopath = "C:\Robo\robocopy.exe"
strTargetRoot = "C:\Robo\biblio\"
strParameter = "/mir /NDL /NFL /NJH /NJS"
strConfigName = "C:\folder.txt"
Set objWshShell = CreateObject("Wscript.Shell")
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
'Parameter schreiben
Set objParamFile = objFileSystem.CreateTextFile(strParamFile, True)
For Each Var In Split(strVars, "#")
If Trim(Var) <> "" Then
objParamFile.WriteLine Var & " = """ & Eval(Var) & """"
End If
Next
objParamFile.Close
'Demo Parameterdatei bearbeiten
objWshShell.Run "notepad """ & strParamFile & """"
WScript.Sleep 1000
MsgBox "Parameterdatei """ & strParamFile & """ wurde erstellt und kann vor dem erneuten Einlesen editiert werden." & vbCrLf & vbCrLf & _
"Bitte diese MessageBox erst nach dem Editieren schließen!", vbInformation, "Parameterdatei erstellt"
'Parameter lesen
For Each Var In Split(objFileSystem.OpenTextFile(strParamFile).ReadAll, vbCrLF)
If InStr(Var, "=") > 0 Then If InStr(strVars, "#" & Trim(Left(Var, InStr(Var, "=") - 1)) & "#") > 0 Then Execute Var
Next
'Parameter ausgeben
Msg = ""
For Each Var In Split(strVars, "#")
If Trim(Var) <> "" Then
Msg = Msg & Var & " = """ & Eval(Var) & """" & vbCrLF
End If
Next
WScript.Echo Msg
'Direkte Verwendung der Variablen
WScript.Echo strRobopath & vbCrLF & strTargetRoot & vbCrLF & strParameter & vbCrLF & strConfigName
Grüße
bastla
@Biber
Ist aber wohl trotzdem besser, wenn ich das auch oben etwas an den Mainstream anpasse ...
Grüße
bastla
auf M$-Systemen, wie sie bei MediaMarkt oder Saturn Hansa mit Werkseinstellungen verhökert werden
Wer wird denn wohl derartige Systeme verwenden? Ist aber wohl trotzdem besser, wenn ich das auch oben etwas an den Mainstream anpasse ...
Grüße
bastla