flowie82
Goto Top

Mit einer Batch in einer txt-datei an einer bestimmten Stelle ein Zeichen einfügen

Hallo zusammen,

ich versuche mich an einer Batch-Datei, allerdings sind meine Kenntnisse eher auf dem Anfänger-Stand.

Ich möchte innerhalb einer beliebigen Textdatei(mit beliebigen Namen) in jeder Zeile an Stelle 14 und 18 ein "|" einfügen.

"Vorlage:"

r 39|24.02.2020|
r 339|24.02.2020|

"Ergebnis:"

r 39|24|.02.|2020|
r 339|24|.02.|2020|

Wichtig dabei ist, das alles davor und dahinter in der Zeile erhalten bleibt und auch eventuelle Leerzeichen mitgezählt werden.

Ich hoffe es ist klar geworden was ich möchte und ihr könnt mir helfen face-smile

Viele Grüße

Florian

Content-Key: 566193

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

Printed on: April 19, 2024 at 02:04 o'clock

Member: Henere
Henere Apr 20, 2020 at 16:16:40 (UTC)
Goto Top
Servus. Bin ich blind oder ist vorher und nachher identisch ?

Henere
Member: FloWie82
FloWie82 Apr 20, 2020 at 16:23:20 (UTC)
Goto Top
Hallo,

das ging schnell und schonmal danke für die Reaktion.

Ne bei nachher ist hinter der 24 ein "|" eingefügt und hinter 02. ist ein "|"

Eigentlich hatte ich nach dem "r" in Zeile 1 noch 7 Leerzeichen und in Zeile 2 noch 6 Leerzeichen eingefügt, so das ich dann auf Stelle 14 und 18 komme, wo dann das Pipe-Zeichen eingetragen werden soll.

Gruß

Florian
Mitglied: 143728
Solution 143728 Apr 20, 2020 updated at 17:21:10 (UTC)
Goto Top
@echo off
set "file=d:\datei.txt"  
powershell -EP ByPass -C "(gc '%file%') -replace '(.{13})(.{4})(.*)','$1|$2|$3' | sc '%file%'"  
Member: FloWie82
FloWie82 Apr 20, 2020 at 18:30:31 (UTC)
Goto Top
Perfekt! Danke!
Setzt die Pipe-Zeichen genau da wo ich sie haben will!

Gibt es bei dem "set "file=d:\datei.txt" - Befehl noch eine Variable oder ähnliches, das die Batch die eine Textdatei nimmt, die in dem Ordner liegt, egal wie sie heißt? So müsste ich ja jedes Mal in die Batch gehen und den Dateinamen der Textdatei angeben, damit es funktioniert!?

Wenn es das noch gibt, wäre ich wunschlos glücklich, wobei der obere Befehl das Hauptproblem gelöst hat!
Mitglied: 143728
Solution 143728 Apr 20, 2020 updated at 20:11:14 (UTC)
Goto Top
@echo off
set "folder=d:\ordner"  
powershell -EP ByPass -C "(gc (gci '%folder%' -Filter *.txt | select -F 1).Fullname) -replace '(.{13})(.{4})(.*)','$1|$2|$3' | sc '%file%'"  
Member: FloWie82
FloWie82 Apr 20, 2020 at 21:23:37 (UTC)
Goto Top
Super danke dir face-smile