neus83
Goto Top

Tool für automatische Config-Datei-Erstellung

Hallo zusammen,

ich suche ein Programm/Script o.ä. was quasi wie einer Serienbrieferstellung funktioniert.

Ich muss als Beispiel etwa 100 Config-Dateien erzeugen, alle Daten zu diesen Configs sind in einer Excel-Tabelle gespeichert, die als CSV exportiert werden kann.
Die Idee ist nun so eine Art Template zu erzeugen, wobei die Suchwörter durch einen Wert ersetzt werden soll.

Das Tool soll nun aber auch dynamisch die Textdatei anlegen und per "Search and Replace" die Daten ausfüllen

Beispiel der Daten:

IP,Subnet,Gateway
172.16.0.12,255.255.0.0,172.16.10.1
172.16.0.22,255.255.0.0,172.16.10.1
172.16.0.32,255.255.0.0,172.16.10.1

So soll nun die Config erzeugt werden:
c:\temp\172.16.0.12.txt
my IP ADDRESS 172.16.0.12
my Gateway 172.16.10.1
my Subnet 255.255.0.0

c:\temp\172.16.0.22.txt
my IP ADDRESS 172.16.0.22
my Gateway 172.16.10.1
my Subnet 255.255.0.0

c:\temp\172.16.0.32.txt
my IP ADDRESS 172.16.0.32
my Gateway 172.16.10.1
my Subnet 255.255.0.0

Der Inhalt der TXT, wiederholt sich hier im Beispiel. Jede Config hat in real aber 6 Seiten.
Fällt jemand was besseres ein wie ein Serienbrief wo man am Ende doch die Dateien einzeln speichern muss.
Ein einfaches Search and Replace Tool genügt also leider nicht face-sad

Content-Key: 168712

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

Printed on: April 26, 2024 at 18:04 o'clock

Member: Clijsters
Clijsters Jun 27, 2011 at 20:46:12 (UTC)
Goto Top
Hallöle,
*Hust* Google
*weiterer Hust* Forensuche

Aber...
Kein Problem:
Auch hier wieder der Hinweis, dass es auf jeden Fall besser geht. Die einzelnen Werte müssen ggf. angepasst werden. Das ist übrigens ein VbScript (*.vbs) ;)
Quelldatei = "C:\blabla\quelle.csv"  
Set FSO = CreateObject("Scripting.FileSystemObject")  
Set Eingang = fso.opentextfile(Quelldatei, 1)
'---------------------------------------  

Do Until Eingang.AtEndOfStream '<-Tuhe bis Am Ende der Datei...  
Zeile = Eingang.ReadLine '<-Definiere Zeile  
Spalte = Split(Zeile, ",") '<-Definiere Spalte (Splittet Zeile in die Teile zwischen Kommata/Kommas, however -.-  
IP=Spalte(0)'<-IP ist die Erste Spalte (Also Spalte0) Und so weiter...  
Subnet=Spalte(1)
GateWay=Spalte(2)
Set FileOut = FSO.OpenTextfile("C:\temp\" & IP & ".txt", 2) '<-Definiere Ausgangsdatei  
FileOut.WriteLine "My IP ADRESS: " & IP'& vbcrlf Schreibe Zeilen, wie gewünscht  
FileOut.WriteLine "My IP GateWay: " & GateWay'& vbcrlf  
FileOut.WriteLine "My IP SubNet: " & SubNet'& vbcrlf  
Loop
'----Ende----  
Ein Batch macht das übrigens auch ganz gut face-smile
Gruß
Dominique
Member: Skyemugen
Skyemugen Jun 28, 2011 at 06:43:59 (UTC)
Goto Top
Zitat von @Clijsters:
Ein Batch macht das übrigens auch ganz gut face-smile

Aloha,

stimmt ... und da der TE keine .csv gepostet hat, auch mal ganz nah am EP die batch:
@echo off
for /f "tokens=1-3 usebackq delims=, skip=1" %%s in ("E:\Ordner\config.xyz") do (  
	(echo my IP ADDRESS %%s
	echo my Gateway %%u
	echo my Subnet %%t)>"C:\temp\%%s.txt"  
)
pause
goto :eof

P.S.: Warum glaube ich, dass in dem Fall hier Ross & Reiter noch im Schatten stehen ...

Zitat von @neus83:
Der Inhalt der TXT, wiederholt sich hier im Beispiel. Jede Config hat in real aber 6 Seiten.

? 6 Seiten? Wie darf man das verstehen und wie schaut das jetzt wirklich aus?

greetz André
Member: neus83
neus83 Jun 28, 2011 at 17:23:18 (UTC)
Goto Top
Ich hab es nun anders gelöst.

Ich habe mir ein Programm geschrieben, welches eine Excel (CSV) auswertet.

Die erste Spalte ruft eine Datei auf je nach ID die in der Spalte ist. Im Anschluss daran wird nach allen Tags wie in der Spaltenüberschrift stehen gesucht und mit den Werten aus der jeweiligen Zeile ersetzt.

Die Werte aus Spalte 1 ermöglichen mir also das dynamische Zuweisen von Templates und die zweite Spalte vergibt mir gleich noch Dateinamen, soweit also mal wieder durch INdividualprogrammierung selbst gelöst ;)
Member: Clijsters
Clijsters Jun 28, 2011 at 18:00:11 (UTC)
Goto Top
Member: Skyemugen
Skyemugen Jun 29, 2011 at 05:20:10 (UTC)
Goto Top
... dem schließe ich mich an Dominique ...