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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 90915
Url: https://administrator.de/contentid/90915
Ausgedruckt am: 09.11.2024 um 01:11 Uhr
5 Kommentare
Neuester Kommentar
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
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
Hallo MysteryMan!
Um den Ablauf nochmals zu klären:
In der xml-Datei steht (fest eingetragen) das Begriffspaar
in einer Zeile. Einer der beiden Begriffe scheint in der Zeile
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
Um den Ablauf nochmals zu klären:
In der xml-Datei steht (fest eingetragen) das Begriffspaar
MysteryMan,Testuser
<Username>MysteryMan</Username>
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
Hallo MyteryMan!
Die Variante "Umschalten" ließe sich so realisieren:
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" ...
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
Grüße
bastla
P.S.: Ich habe übrigens nichts gegen "spielen" ...