anding
Goto Top

Skript oder ähnliches um Werte in Textdatei zu ändern

Hallo,

hab mir schon was zusammengegoogelt, doch ich komm nicht weiter.

Es wird jeden Tag von einem Programm eine Textdatei erstellt. Die heißt immer gleich, ist immer am selben Ort.
Leider sind auch jeden Tag die falschen Werte (sechs Stück an der Zahl drin).
Ich würde gern per Skript oder Batch oder wie auch immer die Werte austauschen. Die Datei soll/muss wieder so heißen wie vorher. Ich schaffe es, einen Wert zu ändern, doch mehrere krieg ich nicht hin.

Danke schon mal,
anding

Content-Key: 104920

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

Printed on: April 18, 2024 at 08:04 o'clock

Member: Cubic83
Cubic83 Dec 30, 2008 at 08:06:53 (UTC)
Goto Top
Hallo,

welches Betriebssystem? (Windows XP?).

Kannst Du mal ein paar Zeilen aus der Datei hinschreiben. Dann kann man sich eher was vorstellen.

mfG
Member: anding
anding Dec 30, 2008 at 08:45:28 (UTC)
Goto Top
OS ist Windows XP

Problem ist, dass auch noch Sonderzeichen in der Datei sind...
So sieht die Datei aus:
0|O|4|29.12.2008|15:25:47|0|||
1|160000|1||FSW44032||29.12.2008|29.12.2008|1||44032|0|||287,50|SG33-143-4 : test|EUR|29.01.2009|||0|||||||||||||||||||||||||||||
2|540000|1||FSW44032|0|131316|0|||-99,20|SG35-143-4  : test|3300|33122421|||||||||||||||||||||||
2|550000|1||FSW44032|0|798231|0|||-880,00|SG35-143-4  : test|3300|33122421|||||||||||||||||||||||
2|560000|1||FSW44032|0|798341|0|||-111,00|SG35-143-4  : test|3300|33122421|||||||||||||||||||||||
2|570000|1||FSW44032|0|798371|0|||-55,30|SG35-143-4  : 
Member: pitti08
pitti08 Dec 30, 2008 at 10:11:32 (UTC)
Goto Top
Hallo Anding,
die Problemdefinition ist ja fast brauchbar...
Verrätst Du uns noch, nach welcher Regel soll welcher Wert ersetzt werden?

How to correctly ask a question
Member: anding
anding Dec 30, 2008 at 10:15:48 (UTC)
Goto Top
131316 in 4131316
798231 in x798231
usw.
Es sind immer die gleichen Werte, die immer mit dem gleichen ersetzt werden sollen...
Member: pitti08
pitti08 Dec 30, 2008 at 10:54:19 (UTC)
Goto Top
Ich war im Raten noch nie gut. Ist bestimmt mein Fehler, daß ich die Anweisung zur Änderung der Werte nicht aus zwei hingerotzten Beispielen entnehmen kann. Was zur Hölle macht das x im zweiten Beispiel?

- Beim ersten wird aus 1 eine 4
- Beim zweiten aus nix ein x
- Bein dritten dann aus x ein u?

*verwirrt bin ich, junger Anwender*

http://www.tty1.net/smart-questions_de.html#explicit
Member: anding
anding Dec 30, 2008 at 12:37:50 (UTC)
Goto Top
Zitat von @pitti08:
Ich war im Raten noch nie gut. Ist bestimmt mein Fehler, daß ich
die Anweisung zur Änderung der Werte nicht aus zwei hingerotzten
Beispielen entnehmen kann. Was zur Hölle macht das x im zweiten
Beispiel?

Deine herablassende Art kannst du dir sparen, ansonsten kann ich auf deine Hilfe verzichten. Es gibt genug fähige Leute im Forum, die Wissen, wie man sich hier im Forum ausdrückt...

- Beim ersten wird aus 1 eine 4
??? Da wird eine 4 vorangestellt... Also auch aus "nix" eine 4, wenn du so willst.


Der Wert 131316 soll in den Wert 4131316 abgeändert werden.
Der Wert 798231 soll in den Wert x798231 abgeändert werden, wobei "x" für eine
beliebige Zahl zwischen 0-9.
Es sind immer die selben sechs Werte die in der Textdatei stehen. Und sie sollen jeden Tag gleich abgeändert werden.
Member: pitti08
pitti08 Dec 30, 2008 at 13:09:33 (UTC)
Goto Top
Deine herablassende Art kannst du dir sparen, ansonsten kann ich auf
deine Hilfe verzichten. Es gibt genug fähige Leute im Forum, die
Wissen, wie man sich hier im Forum ausdrückt...
Ich denke auch, dass dieses Forum sehr viele Fachleute lesen. Danke, daß Sie meine Kompetenz oder Umgangsformen in Zweifel ziehen.
Die überspitzte Formulierung sollte Ihnen das Problem der unzureichenden Problemdefinition vor Augen führen.
Aber an
Der Wert 798231 soll in den Wert x798231 abgeändert werden,
wobei "x" für eine
beliebige Zahl zwischen 0-9.
sehe ich, dass da ein Zufallszahlengenerator verwendet werden soll.

Mittels des Programmes sed können Sie die entsprechende Datei ändern. Nähere Details entnehmen Sie bitte der Dokumentation des Programmes.
Member: miniversum
miniversum Dec 31, 2008 at 10:45:25 (UTC)
Goto Top
Als Batch gehts so:
@echo off
FOR /F "delims=" %%i in (Datei.txt) do ersetze:"%%i"  
copy Datei.tmp Datei.txt
goto:eof

:ersetze
set "line=%~1"  
set "line=%line:131316=4131316"  
set "line=%line:798231=x798231"  
>>Datei.tmp echo %line%
goto:eof
Die Zeilen 8 und 9 können entsprechend erweitert werden.