Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Vbscript - Konfig in ini-Datei auslagern

Frage Entwicklung VB for Applications

Mitglied: bdeath

bdeath (Level 1) - Jetzt verbinden

13.11.2008, aktualisiert 14.11.2008, 5884 Aufrufe, 4 Kommentare

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.


01.
Option Explicit 
02.
Dim objFileSystem 
03.
Dim objFile 
04.
Dim objWshShell 
05.
Dim strConfigFile, strProgDir, strConfigName 
06.
Dim strLine, arrDirLine 
07.
Dim strRobopath, strSource, strTargetRoot, strTarget, strTargetDir, strParameter 
08.
 
09.
Const DbQuote = """" 
10.
Const ForReading = 1 
11.
 
12.
'Variablen definieren 
13.
strRobopath = "C:\Robo\robocopy.exe" 
14.
strTargetRoot = "C:\Robo\biblio\" 
15.
strParameter = "/mir /NDL /NFL /NJH /NJS" 
16.
strConfigName = "folder.txt" 
17.
 
18.
'Aktuelles Verzeichnis auslesen 
19.
Set strProgDir = CreateObject("WScript.Shell") 
20.
strConfigFile = strProgDir.CurrentDirectory & "\" & strConfigName 
21.
 
22.
Set objWshShell = CreateObject("Wscript.Shell") 
23.
Set objFileSystem = CreateObject("Scripting.FileSystemObject") 
24.
 
25.
'Config-Datei ermitteln 
26.
If objFileSystem.FileExists(strConfigFile) Then 
27.
 
28.
	'Config-Datei öffnen 
29.
	Set objFile = objFileSystem.OpenTextFile(strConfigFile, ForReading, False) 
30.
 
31.
'Config-Datei abarbeiten 
32.
	do while not objFile.AtEndOfStream  
33.
		strLine=objFile.Readline 
34.
		arrDirLine=Split(strLine,";") 
35.
		strSource = arrDirLine(0) 
36.
		strTargetDir = arrDirLine(1) 
37.
		strSource = DbQuote & strSource & DbQuote 
38.
		strTarget = DbQuote & strTargetRoot & strTargetDir & DbQuote 
39.
		objWshShell.Run(strRobopath & " " & strSource &  " " & strTarget & " " & strParameter) 
40.
	Loop 
41.
	objFile.Close 
42.
 
43.
else	 
44.
	MsgBox "Die Config-Datei " & strConfigFile & " ist nicht vorhanden!", vbCritical, "Fehler" 
45.
end if
folder.txt momentan
01.
T:\biblio\VisioXP;VisioXP 
02.
T:\biblio\OfficeXP;OfficeXP
Mitglied: bastla
13.11.2008 um 21:35 Uhr
Hallo bdeath!

Vielleicht als Denkanstoß:
01.
strVars = "#strRobopath#strTargetRoot#strParameter#strConfigName#" 
02.
strParamFile = "C:\Params.txt" 
03.
 
04.
'Parameter festlegen 
05.
strRobopath = "C:\Robo\robocopy.exe"  
06.
strTargetRoot = "C:\Robo\biblio\"  
07.
strParameter = "/mir /NDL /NFL /NJH /NJS"  
08.
strConfigName = "C:\folder.txt"  
09.
 
10.
Set objWshShell = CreateObject("Wscript.Shell")  
11.
Set objFileSystem = CreateObject("Scripting.FileSystemObject") 
12.
 
13.
'Parameter schreiben 
14.
Set objParamFile = objFileSystem.CreateTextFile(strParamFile, True) 
15.
For Each Var In Split(strVars, "#") 
16.
    If Trim(Var) <> "" Then 
17.
        objParamFile.WriteLine Var & " = """ & Eval(Var) & """" 
18.
    End If 
19.
Next 
20.
objParamFile.Close 
21.
 
22.
'Demo Parameterdatei bearbeiten 
23.
objWshShell.Run "notepad """ & strParamFile & """" 
24.
WScript.Sleep 1000 
25.
MsgBox "Parameterdatei """ & strParamFile & """ wurde erstellt und kann vor dem erneuten Einlesen editiert werden." & vbCrLf & vbCrLf & _ 
26.
    "Bitte diese MessageBox erst nach dem Editieren schließen!", vbInformation, "Parameterdatei erstellt" 
27.
 
28.
'Parameter lesen 
29.
For Each Var In Split(objFileSystem.OpenTextFile(strParamFile).ReadAll, vbCrLF) 
30.
    If InStr(Var, "=") > 0 Then If InStr(strVars, "#" & Trim(Left(Var, InStr(Var, "=") - 1)) & "#") > 0 Then Execute Var 
31.
Next 
32.
 
33.
'Parameter ausgeben 
34.
Msg = "" 
35.
For Each Var In Split(strVars, "#") 
36.
    If Trim(Var) <> "" Then 
37.
        Msg = Msg & Var & " = """ & Eval(Var) & """" & vbCrLF 
38.
    End If 
39.
Next 
40.
WScript.Echo Msg 
41.
 
42.
'Direkte Verwendung der Variablen 
43.
WScript.Echo strRobopath & vbCrLF & strTargetRoot & vbCrLF & strParameter & vbCrLF & strConfigName
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
Bitte warten ..
Mitglied: Biber
14.11.2008 um 09:17 Uhr
<OT>
Moin bdeath und bastla,

Anmerkung:
auf M$-Systemen, wie sie bei MediaMarkt oder Saturn Hansa mit Werkseinstellungen verhökert werden, führt die Zeile 4
#Parameter festlegen
... zu einem Kompilierungsfehler.

Auf ungetuneten/ungepimpten Rechnern bitte ändern in
' Parameter festlegen

Grüße
Biber
</OT>
Bitte warten ..
Mitglied: bastla
14.11.2008 um 10:44 Uhr
@Biber
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
Bitte warten ..
Mitglied: bdeath
14.11.2008 um 11:15 Uhr
Hallo,

ich habe mir das ungefähr so vorgestellt.
Das VbScript soll die variablen aus dem Config-File auslesen.
Der [Directories]-Teil soll dabei erweiterbar sein.

config.ini
01.
[GeneralSettings] 
02.
Robopath="C:\Robo\robocopy.exe" 
03.
Robopath="C:\Robo\robocopy.exe"  
04.
Parameter="/mir /NDL /NFL /NJH /NJS"  
05.
[Directories] 
06.
j1=T:\biblio\VisioXP;VisioXP 
07.
j2=T:\biblio\OfficeXP;OfficeXP
wenns einfacher ohne "j1" , "j2" ,... kann man die auch weglassen.

Ist dies irgenwie machbar und guter vbscript stil?
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows Server
gelöst Terminalserver .ini Datei unter C:Windows (8)

Frage von geocast zum Thema Windows Server ...

Batch & Shell
gelöst Variable aus ini Datei auslesen und weiterverwenden (17)

Frage von n0cturne zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH ini Datei Datei auslesen (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...