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-ID: 104920

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

Ausgedruckt am: 25.11.2024 um 08:11 Uhr

Cubic83
Cubic83 30.12.2008 um 09:06:53 Uhr
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
anding
anding 30.12.2008 um 09:45:28 Uhr
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  : 
pitti08
pitti08 30.12.2008 um 11:11:32 Uhr
Goto Top
Hallo Anding,
die Problemdefinition ist ja fast brauchbar...
Verrätst Du uns noch, nach welcher Regel soll welcher Wert ersetzt werden?

Wie Du eine Frage richtig stellst
anding
anding 30.12.2008 um 11:15:48 Uhr
Goto Top
131316 in 4131316
798231 in x798231
usw.
Es sind immer die gleichen Werte, die immer mit dem gleichen ersetzt werden sollen...
pitti08
pitti08 30.12.2008 um 11:54:19 Uhr
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
anding
anding 30.12.2008 um 13:37:50 Uhr
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.
pitti08
pitti08 30.12.2008 um 14:09:33 Uhr
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.
miniversum
miniversum 31.12.2008 um 11:45:25 Uhr
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.