Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: bdeath

bdeath (Level 1) - Jetzt verbinden

13.11.2008, aktualisiert 14.11.2008, 5929 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 ..
Ähnliche Inhalte
Batch & Shell
Arbeiten mit INI Files in VBScript
Anleitung von FriemlerBatch & Shell11 Kommentare

In letzter Zeit habe ich hier im Forum des Öfteren Fragen gesehen, wie man aus einer INI-Datei Werte liest ...

Windows Server

Terminalserver .ini Datei unter C:Windows

gelöst Frage von geocastWindows Server8 Kommentare

Guten Abend zusammen Ich habe mir hier einen Server 2012R2 Terminalserver zum Testen aufgesetzt. Ich habe dann unsere alte ...

Batch & Shell

BATCH ini Datei Datei auslesen

gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo zusammen, ich möchte eine ini Datei auslesen mit folgenden Aufbau INHALT DER INI ID=30 NAME="test1" PFAD="K:\Kontoauszug\Test1\*.pdf" PFAD_S="K:\Kontoauszug\Test1\Sicherung\" ID=28 ...

Visual Studio

Anfängerfrage zu INI-Dateien bei der Programmierung

gelöst Frage von Freund.der.NachtVisual Studio6 Kommentare

Guten Tag an alle! Ich habe in VB.Net ein Programm geschrieben. Da dieses Programm auch Einstellungen speichern muss, legt ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 23 StundenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...