busteddice
Goto Top

Batch zum kopieren ersetzen von Text in xml Datei

Hallo zusammen brauch Hilfe bei zwei Batch Dateien.Der erste Batch soll in einer .xml Datei den Text zwischen > und < kopieren und wenn möglich in eine .txt Datei schreiben.Der zweite Batch soll den Text zwischen > und < ersetzen die Batch Datei sollte den Text zum ersetzen aus eine .txt auslesen.

Original xml z.b:

<string name="action_paste">Paste</string>
<string name="action_refresh">Refresh</string>
<string name="action_search">Search</string>
<string name="action_share">Share</string>
<string name="action_rename">Rename</string>
<string name="action_details">Details</string>

Fertige xml z.b:

<string name="action_paste">Einfügen</string>
<string name="action_refresh">Aktualisieren</string>
<string name="action_search">Suchen</string>
<string name="action_share">Share</string>
<string name="action_rename">Umbenennen</string>
<string name="action_details">Details</string>


Danke für jede Hilfe ;)

Content-ID: 221424

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

Ausgedruckt am: 23.11.2024 um 00:11 Uhr

Endoro
Endoro 08.11.2013 um 01:00:56 Uhr
Goto Top
Hi,
die erste Batch:
(for /f "tokens=2delims=<>" %%a in (file.xml) do echo(%%a)>file.txt  
zur zweiten fehlen noch Infos, wie das Ersetzen erfolgen soll.
lg.
BustedDice
BustedDice 09.11.2013 um 13:47:11 Uhr
Goto Top
Okay leider passt die Batch Datei noch nicht ganz bei mir sieht die .txt dann so aus:

C:\Users\Windows7\Desktop>echo(Paste
Paste

C:\Users\Windows7\Desktop>echo(Refresh
Refresh

C:\Users\Windows7\Desktop>echo(Search
Search

C:\Users\Windows7\Desktop>echo(Share
Share

C:\Users\Windows7\Desktop>echo(Rename
Rename

C:\Users\Windows7\Desktop>echo(Details
Details

Aber sollte so aussehen:

Paste
Refresh
Search
Share
Rename
Details
Endoro
Endoro 09.11.2013 um 23:37:39 Uhr
Goto Top
Hi,
das ist ja kein Programm, sondern ein Code-Fragment. Schreib einfach @echo off &setlocal drüber face-smile
lg.
BustedDice
BustedDice 10.11.2013 um 07:22:02 Uhr
Goto Top
Okay aber dann sieht die .txt so aus:

string name="action_paste"
string name="action_refresh"
string name="action_search"
string name="action_share"
string name="action_rename"
string name="action_details"

Aber so sollte es sein:

Paste
Refresh
Search
Share
Rename
Details
Endoro
Endoro 10.11.2013 um 09:43:57 Uhr
Goto Top
Hi,
das wäre möglich, wenn in deiner xml führende Leerzeichen sind. Das kann ich nur sehen, wenn du deinen Text richtig taggst:
    <string name="action_paste">Paste</string>
    <string name="action_refresh">Refresh</string>
    <string name="action_search">Search</string>
    <string name="action_share">Share</string>
    <string name="action_rename">Rename</string>
    <string name="action_details">Details</string>

dann geht die Batch so:
@ECHO OFF &SETLOCAL
(for /f "tokens=3delims=<>" %%a in (file.xml) do echo(%%a)>out.txt  

und die zweite so:
@ECHO OFF &SETLOCAL
for /f "tokens=1*delims=:" %%a in ('findstr /n "^" file.txt') do set "$%%a=%%b"  
(for /f "tokens=1-3,5delims=:<>" %%a in ('findstr /n "^" file.xml') do (  
	SETLOCAL ENABLEDELAYEDEXPANSION
	echo(%%b^<%%c^>!$%%a!^<%%d^>
	endlocal
))>out.xml
lg.
BustedDice
BustedDice 10.11.2013 um 19:05:31 Uhr
Goto Top
Danke der Batch geht:

@echo OFF &SETLOCAL
(for /f "tokens=3delims=<>" %%a in (file.xml) do echo(%%a)>out.txt

Ist es möglich die erhaltene .txt Datei die jetzt so aussieht zu übersetzen und dann wieder an die xml einzufügen?

Die erhaltene .txt Datei:
Paste
Refresh
Search
Share
Rename
Details

Nach den Übersetzen:
Einfügen
Aktualisieren
Suchen
Share
Umbenennen
Details

So soll die Fertige .xml Datei aussehen:
<string name="action_paste">Einfügen</string>
<string name="action_refresh">Aktualisieren</string>
<string name="action_search">Suchen</string>
<string name="action_share">Share</string>
<string name="action_rename">Umbenennen</string>
<string name="action_details">Details</string>
Endoro
Endoro 10.11.2013 um 22:09:09 Uhr
Goto Top
Hi, das macht die zweite Batch von heut früh face-smile
lg.
BustedDice
BustedDice 11.11.2013 um 16:47:01 Uhr
Goto Top
Achso okay stimmt Danke an Endoro für die Hilfe hat mir echt viel Zeit erspart ;)