pollekowski
Goto Top

Einzelne Zeile in .INI Datei ersetzen

Hallo, ich probier schon ein weilchen mit verschiedensten Scripten rum und nichts führt mich an mein Ziel face-sad
Ich hoffe einer von Euch kann mir die Richtung weisen...

Aufgabenstellung ist folgende.

Ich habe eine Datei config.bsp, diese soll während einer unattended Installation (also rein via Batch ohne Zusatztools) kopiert werden unter gleichen Namen. (config.ini)

In der Original Datei ist ein Sting (usr=555) der durch eine Eingabe ersetzt werden soll. (z.B. usr=123)
Der Rest soll aus der Original .BSP Datei kopiert werden.

Der Eintrag usr=555 steht immer an der gleichen Stelle also denk ich mir, ich müsste gar nicht find & Replace machen und nur anweisen, dass die Zeile Nr 21 überschrieben werden sollte.
Bisherige Versuche die Original Datei Zeile für Zeile einzulesen schlugen Fehl, da alle erdenklichen Sonderzeichen in der Datei vorhanden sind.

Beginn der Original Datei

;------------------------------------------------------------------------------------
;--- system - Initialisierungen ---
;------------------------------------------------------------------------------------

[DLL]
;;BusDLL=PccDll
;;WdDLL=aaeondrv.dll 

;*** BUSDLL=PCC.EXE		; DEFAULT ( PCCDLL    = PCCDLL.DLL wird im xxxxxxx geladen )
;*** BUSSCHEME=evcom		; DEFAULT ( EVCOM     = alles andere ist nicht zulässig )
;*** BUSSTARTMODE=SYNCHRONIZE	; DEFAULT ( NONE      = nicht starten ONTIMER (Workaround) / SYNCHRONIZE /... )
;*** BUSHOST=localhost		; DEFAULT ( localhost = IP-Addresse von PC, auf dem xxxxxxx.EXE läuft )
;*** BUSPORT=9003		; DEFAULT ( 9003      = PCC.EXE -Serverport für Kommunikation xxxxxxx -> PCC )
;*** BUSSERVERPORT=9004		; DEFAULT ( 9004      = BUS -Serverport für Kommunikation PCC -> xxxxxxx )
;*** BUSSHOWERRORMSG=true	; DEFAULT ( FALSE     = BUS-Error anzeigen ja/nein )
;*** BUSINIT=ON			; DEFAULT ( ON        = verhindert das senden von Kanälen aus xxxxxxx -> xxxxxxx.EXE  / "DLG=BUS.INITCHANNELS|CHANNEL=C:C001\|...|C:C099\||" )  
;*** BUSSTARTPARAM=ON		; DEFAULT ( ON        = xxxxxxx.EXE wird mit PARAMETER gestartet   /  "exe=d:\temp\#xxxxxxx\ctwin.exe|busserverport=9004|evcomport=9002|BUSSTARTMODE=..|" )  
;*** BUSTIMEOUT=5000		; DEFAULT ( 5000      = Timeout in MSEC für Kommunikation CTWIN -> PCC )

[system]
usr=555
hypath=./
hostname=192.168.10.32
hyintel=i
offlinetimeout=300

Wer kann mir einen Denkanstoß geben, in welche Richtung ich gucken sollte?

Gruß Pollekowski

Content-Key: 125292

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

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

Mitglied: 81825
81825 Sep 18, 2009 at 12:59:58 (UTC)
Goto Top
Hi,

Zitat von @Pollekowski:
Wer kann mir einen Denkanstoß geben, in welche Richtung ich gucken sollte?

An deiner Stelle würde ich die Maus mal in Richtung Forensuche (das ist da, wo steht "Ihr Suchbegriff") bewegen oder einfach den Blick mal nach unten, unterhalb dieses Kommentars richten.
.
Member: Iwan
Iwan Sep 18, 2009 at 13:45:46 (UTC)
Goto Top
Wie postet man 100% falsch?
Nachdem man Google, Bing, Yahoo & Co., die FAQs und Boardsuchen erfolgreich ignoriert hat,
erstellt man mindestens 5 neue Themen, alle in unterschiedlichen aber defintiv falschen Unterforen,
möglichst mit kreativem Titel und undeutlichem Text, damit sich jeder etwas anderes vorstellen kann.
ironie off

also, bitte keine weiteren Themen dazu mehr aufmachen, denn es gibt hier mittlerweile mehr als genug Lösungsansätze dazu
trotzdem wünsche ich ein schönes Wochenende face-wink
Member: Biber
Biber Sep 18, 2009 at 15:33:08 (UTC)
Goto Top
Moin Pollekowski,

geschimpft haben die anderen ja schon mit dir.... dann lass uns jetzt noch schnell diese Mini-Kuh vom Eis holen und dann is' Wochenende.

Ich würde empfehlen:
  • speichere Dir die Original.bsp-Vorlagedatei OHNE die Zeile "user=whatever" in der letzten [section]
  • kopiere die Original.bsp als individuell.ini dahin, wo du sie brauchst
  • Hänge mit "echo user=nnn>>individuell.ini" diese eine Zeile an.

Grüße
Biber
Member: bastla
bastla Sep 18, 2009 at 15:49:10 (UTC)
Goto Top
... oder, wenn's partout die gleiche Zeile sein soll (bzw es noch mehr Sections danach gäbe und die Reihenfolge nicht verändert werden sollte), leicht variiert:
  • speichere Dir die Original.bsp-Vorlagedatei bis VOR die Zeile "user=whatever" als Original.1
  • speichere aus dem Original die Zeilen NACH der Zeile "user=whatever" als Original.2
  • kopiere die Original.1 als individuell.ini dahin, wo du sie brauchst
  • hänge mit "echo user=nnn>>individuell.ini" diese eine Zeile und
  • mit "type Original.2>>individuell.ini" den Rest an

Grüße
bastla
Member: Biber
Biber Sep 26, 2009 at 15:33:30 (UTC)
Goto Top
Moin Pollekowski,

konnte eine der Antworten helfen oder wartest Du noch auf Alternativen?

Grüße
Biber
Member: Pollekowski
Pollekowski Sep 26, 2009 at 19:06:29 (UTC)
Goto Top
Hallo Bastla und Biber,

sry für ein vielleicht vorschnelles Posting, (trotz intensiver Suche) aber wie ich merken musste kann man mit reinem Batch nur sehr eingeschränkt txt Files bearbeiten. Daher bin ich auf eine andere Möglichkeit umgestiegen, die ich hier im Forum gefunden habe. Damit kann man sauber search & replace ohne Zusatztools anwenden. Über einen Hinweiß in DIESE Richtung hätt ich mich gefreut Iwan :-P

@echo off & setlocal

set "file=C:\test\ctwin.ini"  
set "usris=usr=222"  
set "usrinput=usr=1876"  
set "tmpvbs=%temp%\Repl.vbs"  

> %tmpvbs% echo Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile("%file%").ReadAll:fso.CreateTextFile("%file%",True).Write   
Replace(T,"%usris%","%usrinput%")  
cscript //nologo %tmpvbs%