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

Frage Entwicklung VB for Applications

Mitglied: bdeath

bdeath (Level 1) - Jetzt verbinden

13.11.2008, aktualisiert 14.11.2008, 5919 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

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 10 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 12 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...