mysteryman
Goto Top

Per Batch bestimmtes Wert aus einer Textdatei suchen und bearbeiten

Guten Tag,

ich habe schon die Suche gefunden bezüglich meines Themas, aber nicht das richtige gefunden.

Mein Problem ist, das ich aus einer xml-Datei ein bestimmtes Wort ersetzen möchte. Die xml-Datei sieht ungefähr so aus.

Text
MysteryMan,Testuser

<Username>MysteryMan</Username)
NochMehr Text

Ich möchte nun den Usernamen zwischen den Befehl <Username> durch den testuser ersetzen oder anders Herum. Da ich öfters den Username Bearbeiten muss, möchte ich dieses gerne mit einem Script oder einer Batch Datei Lösen.

Das Problem die beiden Usernamen MysteryMan und Testuser müssen im Oberen teil stehen bleibenDas heißt das Script muss erst in die Zeile Springen mit dem befehl <Username> und da den User ersetzen.

Ich weiß den Befehl username gibs nicht, aber er dient hier nur zur Verdeutlichung.

Vielen Dank schonmal im Voraus

MysteryMan

Wenn weiter Fragen sind, werde ich sie versuchen zu beantworten.

P.S.: ich kenne mich nicht sogut mit Scripten aus

Content-ID: 90915

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

Ausgedruckt am: 26.11.2024 um 16:11 Uhr

Crusher79
Crusher79 30.06.2008 um 10:37:44 Uhr
Goto Top
Hi,

würd mit regulären Ausdrücken arbeiten. "sed" ist unter Linux schon lange ein Begriff. Editiert Texte, arbeitet mit Regular Expressions.

Gibs auch für Windows: http://gnuwin32.sourceforge.net/packages/sed.htm


Kannst ja mal nach "sed" Syntax googlen. So kannst du auch per Batch die Dateien ändern.

Wenn du nicht Skripte willst, kannst auch mit einen guten Editor, z.B. PsPad, die Dateien ändern.

Mit Regulären Ausdrücken kannst du ganz gezielt nach Begriffen die z.B. in <> stehen suchen. Ist aber eine Wissenschaft für sich. Schau dir am besten mal eine paar Beispiele dazu an.


Mal ein Beispiel:
Suchen nach: >.*<
Ersetzen mit: >Testuser<

Würde alle zeichen die zwischen den Klammen sind ersetzen. Der "." stellt ein Zeichen dar, "*" ist ein die Anzahl der aufeinanderfolgendne zeichen. * ist in dem Fall unendlich.

mfg Crusher
bastla
bastla 30.06.2008 um 10:51:48 Uhr
Goto Top
Hallo MysteryMan!

Um den Ablauf nochmals zu klären:
In der xml-Datei steht (fest eingetragen) das Begriffspaar
MysteryMan,Testuser
in einer Zeile. Einer der beiden Begriffe scheint in der Zeile
<Username>MysteryMan</Username>
auf und soll durch den jeweils anderen ersetzt werden.

Muss die erstgenannte Zeile aufgrund des aktuell vorhandenen "Username" (im Beispiel "MysteryMan") erst gesucht werden?

Und: Wozu soll der ganze Vorgang dienen - wäre es ev eine Option, zwei (bis auf den Usernamen identische) xml-Dateien (als Vorlagen) zu erstellen und die jeweils benötigte durch Kopieren zu "aktivieren" (also zB Vorlagen: "UsersMyst.tmpl", "UsersTest.tmpl"; kopieren nach "Users.xml")?

Grüße
bastla
MysteryMan
MysteryMan 30.06.2008 um 11:03:01 Uhr
Goto Top
hallo bastla,

genau deine Reihenfolge ist richtig.

an so einer einfachen Lösung mit 2 Dateien habe ich garnicht gedacht. Warum es einfach machen, wenn es auch irgendwie kompliziert geht^^.

Der Vorgang dient dazu, das ich mehrmals täglich die xml- bearbeiten muss und man sich ja dieses eigentlich vereinfachen kann.

Hier benötigt man ja nur zwei Batch-Dateien mit einem einfachen Copy befehl oder könnte man dieses auch mit einer realisieren?

Dieses dient nicht zum Spielen, sondern für die Arbeit.

Die beiden Usernamen sind FEST, diese ändern sich nie.

Vielen dank schonmal für die rasche hilfe =)
bastla
bastla 30.06.2008 um 11:39:15 Uhr
Goto Top
Hallo MyteryMan!

Die Variante "Umschalten" ließe sich so realisieren:
@echo off & setlocal
set "Profil=D:\Users.xml"  
set "Profil1=D:\UsersMyst.tmpl"  
set "Profil2=D:\UsersTest.tmpl"  

fc /b "%Profil%" "%Profil1%">nul  
if errorlevel 1 (
    echo Aktiviere Profil "MysteryMan"  
    copy "%Profil1%" "%Profil%">nul  
) else (
    echo Aktiviere Profil "Test"  
    copy "%Profil2%" "%Profil%">nul  
)
pause
Voraussetzung für das Funktionieren ist, dass die xml-Datei nicht zusätzlich verändert wird, da für die Auswahl des Profils mit "fc" ein Dateivergleich vorgenommen wird.

Grüße
bastla

P.S.: Ich habe übrigens nichts gegen "spielen" ... face-wink
MysteryMan
MysteryMan 01.07.2008 um 08:32:27 Uhr
Goto Top
Guten Morgen,

ich habe nun soweit dein Script angepasst, also richtigen Pfad eingegeben.

Ich habe die die 2 tmpl Dateien erstellt, immer mit dem einen anderen Usernamen.

In der Konsole zeigt er immer an, Aktiviertere Profil "Test", aber schreibt es nicht in die Datei. Die Dateien, bleiben sonst immer gleich, es wird nur der eine Wert geändert.
Ich denke das Problem ist, das er noch beim ersten Usernamen Guckt und dann es verändert. Also immer nur MysteryMan anguckt.

Die Dateien befinden sich alle in einem Ordner, die Batch-Datei auch
Ich auch nicht ;), da ich selber spiele.

Ich nehme alles Zurück. Mein Plöder Fehler... habe die 2 Datei nicht richtig angepasst. Es Funktioniert jetzt. Vielen vielen Danke für deine Hilfreiche unterstüzung.

Könnte ich dir Blumen geben, würde ich es tuhen ;)
MfG
MysteryMan