Page 1 of 1

Variablen Text-String ersetzen

Posted: 11. Feb 2010, 11:27
by martinz71
Hallo,

möchte in einem per Reg Export erzeugten Textfile einen "XYZ Wert" durch einen "festen Wert" ersetzen.

zb.
SrcPath"="\\\\server1-9999\\Configurator$\\Packages\\Adobe\\Acrobat Reader DEU\\9.3.0"

hier soll \\\\server1-9999\\Configurator$ durch \\\\%EmpirumServer%\\Configurator$ ersetzt werden!

da der Server1-9999 immer unterschiedlich ist, ist ein ersetzen mit

ReplaceTextFile ("%temp%\HKLM_EMPIRUM.ini", "\\\\server1-9999\\Configurator$", "\\\\%EmpirumServer%\\Configurator$", 0)

nicht ohne weiters möglich! Da der Wert "Server1-9999" immer unterschiedlich ist!

Welche Möglichkeiten kämen in Frage!!

Posted: 11. Feb 2010, 13:18
by Walter_Schulz
Gehe ich recht in der Annahme, dass Sinn und Zweck der Aktion sein soll, in der Registry der Rechner alle Eintraegen \\Server-xxxx\Configurator$ durch \\%EmpirumServer%\Configurator$ zu ersetzen?

Duerfte sich ausschliesslich um REG_SZ handeln, oder?

Ciao!
Walter Schulz

Posted: 11. Feb 2010, 13:30
by martinz71
Richtig, hier handelt es sich nur um REG_SZ Werte!

Ersetzen von hart eingetragenen EmpirumServern (unterschiedliche Namen) durch die %EmpirumServer% Variable!

Posted: 11. Feb 2010, 13:59
by Walter_Schulz
Sind die Servernamen bekannt?

Ciao!
Walter Schulz

Posted: 11. Feb 2010, 14:10
by martinz71
Ja, die Servernamen sind bekannt (ca 90 Server) !

Grüße Martin

Posted: 11. Feb 2010, 15:14
by Walter_Schulz
Das ist doch noch uebersichtlich!
Also Liste erstellen und dann Paste+Copy ...

Alternative: Tools in Richtung SED, awk und Konsorten, die mit regulaeren Ausdruecken arbeiten koennen.

Ciao!
Walter Schulz

Posted: 11. Feb 2010, 15:40
by MGrundl
Nur kurz zum Verständnis:
Was möchtest Du mit dieser HKLM_EMPIRUM.ini machen?
Warum bearbeitest Du die mit einer Setup.inf?

lg,
Manfred

Posted: 11. Feb 2010, 18:19
by Theo_Gottwald
Mit dem Package Robot ist das ein 4 Zeiler:

Code: Select all

VAR\$$PAT=C:\Myfile.reg
VAR\$$OLD=\\\\server1-9999\\Configurator$
VAR\$$NEW=\\\\%EmpirumServer%\\Configurator$
RIF\$$PAT|$$OLD|$$NEW

Posted: 11. Feb 2010, 20:24
by Walter_Schulz
Leider muss ich bezweifeln, dass damit die Aufgabe erledigt ist. Der String "Server1-9999" ist nur ein Platzhalter fuer etwa 90 Server. Bitte um Korrektur, falls ich mich irre, aber der Code scheint nur den String "\\\\Server1-9999\\Configurator$" gegen "\\\\%Empirumserver%\\Configurator$" zu tauschen.

Ciao!
Walter Schulz

Posted: 11. Feb 2010, 20:40
by Theo_Gottwald
Völlig richtig.

Also nehmen wir an, die 90 zu ersetzenden Strings liegen in einer Textdatei vor. Die Textdatei nennen wir mal "Server.txt".

Format:

Code: Select all

String1?String2
String1?String2
String1?String2
String1?String2
... 

So und damit hätten wir einen zehn-Zeiler.

Code: Select all

VAR\$$SET=c:\Server.txt
VAR\$$PAT=C:\Myfile.reg
FEL\$$SET|DoIt|$$TXT
MBX\Bin fertig!
END\

:DoIt
SBD\|$$TXT|?|1
VAR\$$OLD=$v1$
VAR\$$NEW=$v2$
RIF\$$PAT|$$OLD|$$NEW
@
Als Hinweis zum Verständnis: FEL\ (For-Each-Line) Liest nacheinander jede Zeile der "Server.txt" und ruft damit das Unterprogramm "DoIt" auf.
Dort zerlegt SBD\ (String-between Delimiter) den $$TXT in zwei Teile abgetrennt vom "?" als Delimiter. Diese weisen wir einfach den Variablen $$OLD und $$NEW zu. Evtl. könnte man hier auch noch trimmen mit "VBT\" (Variable Both Trim).

Man könnte das nun auch auf eine ganze Anzahl Files anwenden, in dem man einfach auf die gleiche Weise noch eine übergeordnete Instanz mit einem FEF\ (For-Each-File) davor macht. Kommt das so hin?

PS: Hab das jetzt einfach mal so rausgeschrieben ohne dass ich es testlaufen lassen kann. Im Prinzip gehts aber so.