Benötige eine Batch Datei, die in einer txt Datei zusätzliche Spaces oder Blancs einfügt

Klendathu

Cadet 3rd Year
Registriert
März 2017
Beiträge
45
Hallo,

eine weitere Anfrage bezüglich Batch^^

ich habe eine txt Datei (Input.txt'), die in etwa wie folgt aussieht:

6 8

2 9

4 0,5

2 1.75

47 89

7 6

12 787

78 098

ich möchte nach der ersten Zahl in der txt Datei z.B 25Freizeichen einfügen, damit der Abstand der beiden Zahlen in der Datei größer wird. Die erste Zahl in meiner txt. Datei ist nicht, wie im Beispiel, an der ersten Stelle der Zeile, sondern kann sich z.b an der fünften oder an der siebten befinden.

Ist das mit einer Batch Datei möglich? Die

Vielen lieben Dank im Voraus für Hilfe!! :-)

Lg Klen
 
Erst man genauer gefragt, bevor es eine Lösung gibt: Was willst Du genau machen bzw. was ist der Zweck des Einfügens? Was soll das mit der Zahl, die Du erweitern willst, und die an anderer Stelle ist. Warum ist sie an anderer Stelle, was sind das für Zahlen?
 
Ich würde als erstes mal mit grep die variabel vorhandenen Leerzeilen komplett rauswerfen.
grep -v “^$“ input.txt > output.txt

Dann mit sed oder „tr“ (letzteres unter Windows so nicht verfügbar) nach jeder Zeile die gewünschte konstante Anzahl Leerzeilen einfügen.
Google mal nach:
sed insert newline
oder
sed replace with newline

Gibt auch Powershell Kommandos, die das gleiche wie sed und grep können: https://blogs.msdn.microsoft.com/zainnab/2007/07/08/grep-and-sed-with-powershell/
 
Klendathu schrieb:
Die erste Zahl in meiner txt. Datei ist nicht, wie im Beispiel, an der ersten Stelle der Zeile, sondern kann sich z.b an der fünften oder an der siebten befinden.
Ist es egal, ob die erste Zahl hinterher an einer festen Stelle steht? Dann ist es eine sehr einfache For-Schleife.
 
Code:
@ECHO OFF
set source="Quelldatei"
set origin="Zieldatei"
REM hinter dem = soviele Leerzeichen wie benötigt
set spaces=                   

REM leere Zieldatei anlegen
ECHO. 2>%origin%
REM Zeilen durchgehen und Werte ausgeben
for /f "eol=*tokens=1-2" %%a in ('type %source%') do @Echo=%%a%spaces%%%b >>%origin%

Dabei steht der 1. Wert immer am Zeilenanfang.
 
  • Gefällt mir
Reaktionen: Klendathu
Du hast noch nicht gesagt, warum Du das so brauchst? Generell sollten Daten, die so weiterverarbeitet werden, anders aufbereitet werden und alle Zeichen entsprechend so schlank wie möglich gehalten werden, bzw. mit anderen Delimitern separiert werden.
 
Zuletzt bearbeitet:
Hi! Danke euch allen. Wirklich ganz toll! Die Batch scheint zu funktionieren :-)
@PHuV ich benötige die Batch um in ein bereits vorher von mir bearbeitetes dokument, in dem danach nur noch zahlen stehen, den zeilenabstand so zu vergrößern, dass ich daraus ein xls dokument erstellen kann per konvertierer, in dem die zahlen im richtigen feld stehen. danach möchte ich formeln darauf anwenden!

Lg Klen
 
Zuletzt bearbeitet:
Klendathu schrieb:
ich benötige die Batch um in ein bereits vorher von mir bearbeitetes dokument, in dem danach nur noch zahlen stehen, den zeilenabstand so zu vergrößern, dass ich daraus ein xls dokument erstellen kann per konvertierer, in dem die zahlen im richtigen feld stehen.
Ähm... schon mal was von csv gehört? Die kann Excel sogar direkt öffnen, ohne Konvertierung. Dabei kommt es nur auf das Trennzeichen (der von @PHuV erwähnte Delimiter) an. Häufig wird das Semikolon verwendet.

Statt die Felder nach deinem Schema so zu trennen:
Code:
1          2                 3             4     
9          8                 7             6

Sähe eine csv mit Semikolon dann so aus:
Code:
1;2;3;4
9;8;7;6

Als bla.csv abgespeichert kann man doppelt draufklicken und hat ne Excel-Tabelle, weil Excel .csv ebenso verlinkt wie .xls und Co.
 
  • Gefällt mir
Reaktionen: PHuV
Weil man seit Wochen, wenn nicht gar schon Monaten und einem Dutzend Threads mit einem ungeeigneten Werkzeug wie Batch versucht, ein unnötig komplexes Problem zu lösen, das man ohne Fremde Hilfe nicht lösen kann, weil man nicht darauf hört, wenn man jedes Mal gesagt bekommt, dass man eben das falsche Werkzeug nutzt.
 
  • Gefällt mir
Reaktionen: BAGZZlash
PHuV schrieb:
@Raijin
Genau so macht man das, und nicht anders. Warum muß man Felder aufblähen, um daraus ein xls-Dokument zu generieren? :confused_alt:
Weil Excel beim Importieren aus Textdateien nicht nur die Option getrennt anbietet, sonder auch feste Breite. Dann musst Du natürlich dafür sorgen, dass sich die Spalten nicht in den einzelnen Zeilen überlappen. ;) Kanonen und Spatzen und so.... Trennzeichen kann auch ne Leerstelle sein...
 
Eine (!) Leerstelle, aber nicht viele! Ließ Dir bitte nochmal durch, was oben gemacht wird, und das ist suboptimal. Wenn Du einzelne Felder aufblähen muß, dann greift man üblicherweise zu Fixformaten. Dann werden alle (!) Felder anhand der festen Stellen identifiziert ( laß mal da dann ein UTF-8 oder UTF-16 reinrutschen, und dann funktioniert das nicht mehr). Aber man sollte Mischformen meiden, das macht die Weiterverarbeitung schwierig, unzuverlässig und fehlerbehaftet.
 
Zurück
Oben