dekstar
Goto Top

Suche VB Script

Wie kann ich mit vbscript eine *.ini auf den Inhalt prüfen und wenn abweichung von template.ini mit den daten von der template.ini befüllen lassen?

Hallo an alle VBscripter

Also hier nochmal etwas ausführlicher beschrieben.

Schritt1: Ich möchte gerne den Inhalt einer example.ini mit den Inhalt einer template.ini vergleichen.

Schritt2: Falls keine Abweichung besteht => keine Aktion

Schritt3: Falls Abweichung oder Daten fehlen => diese von der template.ini in die example.ini schreiben, speichern und beenden.

Ich habe schon sehr intensiv nach einem passend Script gesucht jedoch ohne Erfolg (ich glaube fast das wird eine harte nuss sein)

Also ich bin für jegliche Anregungen oder Hilfestellungen sehr dankbar und verbleibe mit freundlichen Grüßen

script for the tip

Content-Key: 107819

Url: https://administrator.de/contentid/107819

Printed on: April 19, 2024 at 16:04 o'clock

Member: bastla
bastla Feb 02, 2009 at 14:41:53 (UTC)
Goto Top
Hallo dekstar und willkommen im Forum!

Meine erste Idee nach Lesen Deines Beitrages war ein Batch (wenn man/frau die paar Zeichen so nennen wollte face-wink):
@copy template.ini example.ini
Danach sind die beiden Dateien sicher gleich. face-wink

Da dies vermutlich nicht die gewünschte Lösung ist, solltest Du vielleicht doch etwas deutlicher (am besten mit konkreten Beispielen) illustrieren, was als "Abweichung" gilt und wie "fehlende Daten" ergänzt werden sollten.

Grüße
bastla
Mitglied: 60730
60730 Feb 02, 2009 at 14:44:45 (UTC)
Goto Top
Servus,

  • "muß" es vbs sein - oder gehts auch mit einem banalen .cmd?

Schritt1: Ich möchte gerne den Inhalt einer example.ini mit den Inhalt einer template.ini vergleichen.
soweit klar - wäre FC mein erster Befehl.

Schritt2: Falls keine Abweichung besteht => keine Aktion
soweit klar - wäre FC und Variable %errorlevel% mein zweiter Befehl.

Schritt3: Falls Abweichung oder Daten fehlen => diese von der template.ini in die example.ini schreiben, speichern und beenden.
und da verstehe ich dein Vorhaben nicht - es soll ja nicht Zeilenmäßig ausgetauscht werden, sondern immer der identische Stand vorhanden sein.
Das sollte per Xcopy oder Copy "schneller" gehen.

Gruß


Edit:
Wer in Bastla und Biber Territorium antwortet - sollte früher aufstehen face-wink
/Edit
Member: dekstar
dekstar Feb 02, 2009 at 14:57:22 (UTC)
Goto Top
hallo erstmal und danke für eure antworten

meine anfrage beruht auf folgendem prinzip.

1.) example.ini hat 200 zeilen

2.) template.ini hat 150 zeilen

3.) bis zur 150 zeile soll der inhalt geprüft und wenn nötig gepatcht werden

4.) ab zeile 151 in der example.ini soll alles so bleiben (daher keine copy funktion möglich)

5.) es kann auch sein dass der angegeben bereich der template.ini nur 5 zeilen code ist dieser in der example.ini zwischen zeile 120-130 liegt und genau dort eine abweichung besteht. nun soll diese abweichung mit der template.ini in übereinstimmung gebracht werden.

sry dass ich mich bei der ersten anfrage nicht klar genug ausgedrückt habe.

lg
Member: bastla
bastla Feb 02, 2009 at 15:55:31 (UTC)
Goto Top
Hallo dekstar!

Dann stellt sich als nächstes die Frage nach dem Aufbau der Datei (bzw, wie die Zuordnung einer Zeile der "template.ini" zur richtigen Zeile der "example.ini" zu erfolgen hat - vielleicht ein Beispiel?).

Weitere Frage: Wenn eine Zeile der "template.ini" in der "example.ini" nicht gefunden wird, soll dann diese Zeile am Ende angefügt werden (und wenn nein, wo sonst)?

Grüße
bastla
Member: dekstar
dekstar Feb 05, 2009 at 07:33:56 (UTC)
Goto Top
Also nochmals danke für eure antworten.

Hier nun der aufbau der datei. (ich habe mal als beispiel die services genommen)

Template.ini = services.bak

example.ini = services

final.ini = services.final

Also fangen wir mal an. (es sind nur die zeilen mit sql6 bzw sql9 von bedeutung (ich habe mehr code eingefügt damit der copy befehl klar als nicht gültig geshen wird)

1. ) bitte vergleiche template.ini mit example.ini
hier die wesentlichen codes der einzelnen files

template.ini ab zeile 106
phone            1167/udp                           #Conference calling
ms-sql-s         1433/tcp                           #Microsoft-SQL-Server 
ms-sql-s         1433/udp                           #Microsoft-SQL-Server 
ms-sql-m         1434/tcp                           #Microsoft-SQL-Monitor
ms-sql-m         1434/udp                           #Microsoft-SQL-Monitor                
wins             1512/tcp                           #Microsoft Windows Internet Name Service
wins             1512/udp                           #Microsoft Windows Internet Name Service
ingreslock       1524/tcp    ingres
l2tp             1701/udp                           #Layer Two Tunneling Protocol
pptp             1723/tcp                           #Point-to-point tunnelling protocol
radius           1812/udp                           #RADIUS authentication protocol
radacct          1813/udp                           #RADIUS accounting protocol
nfsd             2049/udp    nfs                    #NFS server
knetd            2053/tcp                           #Kerberos de-multiplexor
man              9535/tcp                           #Remote Man Server


**sql9**             7210/tcp # SAP DB
sql3             7200/tcp # SAP DB
sapdbni72        7269/tcp # SAP DB
vmake            7792/tcp # SAP DB

nun der wesentliche code der example.ini ab zeile 106
phone                1167/udp                           #Conference calling
ms-sql-s             1433/tcp                           #Microsoft-SQL-Server 
ms-sql-s             1433/udp                           #Microsoft-SQL-Server 
ms-sql-m             1434/tcp                           #Microsoft-SQL-Monitor
ms-sql-m             1434/udp                           #Microsoft-SQL-Monitor                
wins                 1512/tcp                           #Microsoft Windows Internet Name Service
wins                 1512/udp                           #Microsoft Windows Internet Name Service
ingreslock           1524/tcp    ingres
l2tp                 1701/udp                           #Layer Two Tunneling Protocol
pptp                 1723/tcp                           #Point-to-point tunnelling protocol
radius               1812/udp                           #RADIUS authentication protocol
radacct              1813/udp                           #RADIUS accounting protocol
nfsd                 2049/udp    nfs                    #NFS server
knetd                2053/tcp                           #Kerberos de-multiplexor
man                  9535/tcp                           #Remote Man Server

**sql6**             7210/tcp # SAP DB
sql3             7200/tcp # SAP DB
sapdbni72        7269/tcp # SAP DB
vmake            7792/tcp # SAP DB

catiav5bb        55558/tcp  #Dassault Systemes Communication ports
catiav5run       55556/tcp  #Dassault Systemes Communication ports
CATDeviceBroker  55557/tcp  #Dassault Systemes Communication ports

2.) und nun führe änderungsschritte aus
und hier wie es dann auschauen soll die final.ini wieder ab zeile 106

phone                1167/udp                           #Conference calling
ms-sql-s             1433/tcp                           #Microsoft-SQL-Server 
ms-sql-s             1433/udp                           #Microsoft-SQL-Server 
ms-sql-m             1434/tcp                           #Microsoft-SQL-Monitor
ms-sql-m             1434/udp                           #Microsoft-SQL-Monitor                
wins                 1512/tcp                           #Microsoft Windows Internet Name Service
wins                 1512/udp                           #Microsoft Windows Internet Name Service
ingreslock           1524/tcp    ingres
l2tp                 1701/udp                           #Layer Two Tunneling Protocol
pptp                 1723/tcp                           #Point-to-point tunnelling protocol
radius               1812/udp                           #RADIUS authentication protocol
radacct              1813/udp                           #RADIUS accounting protocol
nfsd                 2049/udp    nfs                    #NFS server
knetd                2053/tcp                           #Kerberos de-multiplexor
man                  9535/tcp                           #Remote Man Server

**sql9**             7210/tcp # SAP DB
sql3             7200/tcp # SAP DB
sapdbni72        7269/tcp # SAP DB
vmake            7792/tcp # SAP DB

catiav5bb        55558/tcp  #Dassault Systemes Communication ports
catiav5run       55556/tcp  #Dassault Systemes Communication ports
CATDeviceBroker  55557/tcp  #Dassault Systemes Communication ports
Member: dekstar
dekstar Mar 13, 2009 at 07:06:54 (UTC)
Goto Top
SO ich habs hinbekommen => traurig war nur das unter allen profis hier keiner mehr lust und laune (das diese nicht fähig waren will ich mir nicht erlauben zu sagen) hatte eventuelle vorschläge zu machen.

ich muß mir noch überlegen ob ich mein script hier posten soll, im endeffekt kam ja nicht wirklich brauchbares zurück => just leech no way

einen kleinen auszug geb ich euch kurz

Sub ReplaceServicesEntry(objstrWorkDir, strFindText, strInsert)
	Dim strLine, i, strText
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")  
	i = 0 
	strText=""  
	If objFSO.FileExists(strWorkDir) Then
		Set objFile = objFSO.OpenTextFile(strWorkDir, ForReading)
		Do Until objFile.AtEndOfStream
			strLine = objFile.ReadLine
			i = i + 1
			If Left(strLine, InStr( strLine, " ")) = Left(strFindText, InStr ( strFindText, " ")) Then   
				strLine =  strInsert
			End If
			strText = strText & strLine & VbCrLf
		Loop
		objFile.Close
	Else
		MsgBox "Die Datei " & strWorkDir & " wurde nicht gefunden."  
	End If
	Set objFile = objFSO.OpenTextFile(objstrWorkDir, ForWriting)
	objFile.Write strText
	objFile.Close
	Set objFSO = Nothing

End Sub
Member: bastla
bastla Mar 13, 2009 at 08:26:28 (UTC)
Goto Top
Hallo dekstar!

Sorry - hatte den Beitrag aus den Augen verloren; passiert mir zwar eher selten, war aber in diesem Fall leider so ... face-sad

Freut mich aber, dass Du das Problem selbst lösen konntest. face-smile

Grüße
bastla

P.S.: Eine kurze Erinnerung Deinerseits per PM wäre natürlich auch eine Möglichkeit gewesen, meine Aufmerksamkeit wieder hier her zu lenken ...