esstmehrbiberschuetztdenwald
Goto Top

Formatierung eines Textdokumentes wie ein Roboter

Hallo zusammen

Meine Frage betrifft das formatieren von einem Textdokument.

Gegeben: - Massenweise Text aneinander geschrieben .....

Gesucht: - Ein Programm das nach x Buchstaben x tabulatoren einfügt.

Im Text sind zb. Geburtsdaten, Orte, Namen drin ..... alles aneinander und schlussentlich soll es so aussehen

Albert 1.1.1990 Embrach
Berta 2.1.1990 Bülach
Carla 3.1.1990 Zürich


Vorher sah es so aus ..


Albert 1.1.1990, 1.1.1990, Embrach,,, Berta, 2.1.1990, Bülach,,, Carla, 3.1.1990, Zürich,,, ................

Da ich sicher schleifen benutzen muss ist meine

Frage an euch: "Mit welchen Befehlen muss ich hier arbeiten?" :D

Habe schon diverse batch tutorials angeschaut und nichts treffendes gefunden (ausser die schleifen .. ) ....

Danke schon im voraus für eure Antwort

gruss

Alex

Content-ID: 72939

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

Ausgedruckt am: 20.11.2024 um 00:11 Uhr

EsstMehrBiberSchuetztDenWald
EsstMehrBiberSchuetztDenWald 07.11.2007 um 13:14:17 Uhr
Goto Top
vieleicht noch als hinweis .... man müsste bat irgendwie erklären das es alle ";" durch tabulatoren ersetzt .... geht das überhaupt oder muss man da auf andere programme zurückgreifen? :D
bastla
bastla 07.11.2007 um 18:10:08 Uhr
Goto Top
Hallo EMBSDW!

@echo off & setlocal
set "Ein=D:\Alle Geburtstage in einer Zeile.txt"  
set "Aus=D:\Geburtstagsliste.txt"  

set "Cvt=%temp%\ConvSC.vbs"  
echo WScript.Echo Replace(Replace(CreateObject("Scripting.FileSystemObject").OpenTextFile("%Ein%", 1).ReadAll, ";;;", vbCrLF), ";", vbTab)>"%Cvt%"  
cscript //nologo "%Cvt%">"%Aus%"  
del "%Cvt%"  

Grüße
bastla
EsstMehrBiberSchuetztDenWald
EsstMehrBiberSchuetztDenWald 08.11.2007 um 08:29:57 Uhr
Goto Top
hm .. danke vielmals für die arbeit die du heir reingesteckt hast ..... aber ich habe noch probleme mit den daten anzupassen, sprich was wo rein kommt ... da ich es ja schlecht 1 zu 1 übernehmen kann ... .:D

Code:

@echo off & setlocal
set "Ein=Z:\Treueabo_tab.csv"
set "Aus=Z:\Endergebnis.txt"

set "Cvt=%temp%\ConvSC.vbs"
echo WScript.Echo Replace(Replace(CreateObject("Scripting.FileSystemObject").OpenTextFile("%Ein%", 1).ReadAll, ";;;", vbCrLF), ";", vbTab)>"%Cvt%"
cscript //nologo "%Cvt%">"%Aus%"
del "%Cvt%"

Ich habe nun einfach die Datei mit dem Text eingegeben (Z:\Treueabo_tab.csv") bzw. pfad
und die datei die es erstellen sollte .... (Z:\Endergebnis.txt") bzw. pfad


Ergebnis:

Ein Textfile mit folgendem Inhalt:

˜çI


Keine Ahnung was der bedeutet ... :D

Gruss

Alex
bastla
bastla 08.11.2007 um 11:44:42 Uhr
Goto Top
Hallo EMBSDW!

Könnte ein Codepage-Problem sein (je nach Datenherkunft ASCII/ANSI) - versuch es mit dieser Variante:
@echo off & setlocal
set "Ein=Z:\Treueabo_tab.csv"  
set "Aus=Z:\Endergebnis.txt"  

set "Cvt=%temp%\ConvSC.vbs"  
echo Set fso=CreateObject("Scripting.FileSystemObject"):fso.OpenTextFile("%Aus%",2,True).Write Replace(Replace(fso.OpenTextFile("%Ein%",1).ReadAll,",,, ",vbCrLF),",",vbTab)>"%Cvt%"  
cscript //nologo "%Cvt%"  
del "%Cvt%"  

Als Anmerkung: Da Dein Beispiel und Deine Beschreibung oben widersprüchlich waren (im Beispiel war das Tennzeichen ein ","/ lt nächstem Post wolltest Du alle ";" durch Tab ersetzt haben) musste ich raten und habe als Trennzeichen ";" verwendet ... [Edit] ... und bin damit daneben gelegen - jetzt also mit "," [/Edit]

Grüße
bastla
EsstMehrBiberSchuetztDenWald
EsstMehrBiberSchuetztDenWald 08.11.2007 um 11:54:17 Uhr
Goto Top
hehe .... sorry das ist mein fehler es sollten eigentlich kommas sein ... :D

ich habe un beim code die 3 ";" durch kommas ersattzt und das programm gibt mir folgendes aus ..

ein textfile mit paar hundert "tabs" und nachher ganz normal mein text .. :D
bastla
bastla 08.11.2007 um 12:08:27 Uhr
Goto Top
Hallo EMBSDW!

Es gibt noch eine Stelle mit einem ";" - ich ändere das gleich oben auf ",".

Für Dein obiges Beispiel sieht dann das Ergebnis bei mir so aus:
Albert 1.1.1990	 1.1.1990	 Embrach
Berta	 2.1.1990	 Bülach
Carla	 3.1.1990	 Zürich
................

Grüße
bastla
EsstMehrBiberSchuetztDenWald
EsstMehrBiberSchuetztDenWald 08.11.2007 um 13:04:02 Uhr
Goto Top
genau so sollte es aussehen .. :D

Danke euch vielmals für eure mühe ... face-smile

gruss

alexander
EsstMehrBiberSchuetztDenWald
EsstMehrBiberSchuetztDenWald 22.11.2007 um 12:52:00 Uhr
Goto Top
So da bin ich wieder ....

Nach näherem betrachten des Textfiles habe ich folgende Fehler festgestelllt

1. Ein Teil des Text wird abgeschnitten ....

2. Am Anfang des Textfiles folgen zeurst mal xxx Tabulatoren

Für Punkt eins habe ich ehrlich gesagt keine Erklärung ... ich frage mich ob vieleicht was mit dem "fortmatierungs File" nicht stimmt ... (die Anfangsdaten).

Zu Punkt zwei kann ich mir nur vorstellen, dass die Schleife am anfang aus irgend einem Grund leer läuft ,sprich nur den Tabulator ausführt ...

Der Quellcode sieht folgendermassen aus:


@echo off & setlocal
set "Ein=Z:\Treueabo_tab.csv"
set "Aus=Z:\Endergebnis.txt"

set "Cvt=%temp%\ConvSC.vbs"
echo Set fso=CreateObject("Scripting.FileSystemObject"):fso.OpenTextFile("%Aus%",2,True).Write Replace(Replace(fso.OpenTextFile("%Ein%",1).ReadAll,",,, ",vbCrLF),",",vbTab)>"%Cvt%"
cscript nologo "%Cvt%"
del "%Cvt%"


Vieleicht könnt ihr mir noch folgende Passage erklären .. ? :D

cscript
nologo "%Cvt%"

Was bewirkt die?
bastla
bastla 22.11.2007 um 15:11:59 Uhr
Goto Top
Hallo EMBSDW!

cscript //nologo "%Cvt%" 
startet einfach das in der "echo"-Zeile erstellte VBScript "%temp%\ConvSC.vbs". Wozu das "//nologo" dient, siehst Du, wenn Du es einmal weg lässt face-wink ...

Das angesprochene Script
- liest den gesamten Inhalt der Datei %Ein%,
- ersetzt die Kombination ",,, " durch eine Zeilenschaltung, danach
- jedes "," durch Tab und
- schreibt das Ergebnis in die Datei %Aus%.

Da ich nur Dein oben gepostetes Musterbeispiel zur Verfügung hatte (habe), kann ich nicht feststellen, woher die beschriebenen Fehler stammen könnten - dass allerdings bei einer reinen Textdatei ohne irgendwelche enthaltenen Sonderzeichen Textteile abgeschnitten werden, dürfte eigentlich nicht passieren - versuch es aber zur Sicherheit mit der folgende Zeile (als Ersatz für die bisherige "echo"-Zeile):
echo Set fso=CreateObject("Scripting.FileSystemObject"):S=fso.GetFile("%Ein%").Size:fso.OpenTextFile("%Aus%",2,True).Write Replace(Replace(fso.OpenTextFile("%Ein%",1).Read(S),",,, ",vbCrLF),",",vbTab)>"%Cvt%"  

Grüße
bastla
EsstMehrBiberSchuetztDenWald
EsstMehrBiberSchuetztDenWald 22.11.2007 um 15:59:01 Uhr
Goto Top
Hallo Bastla

Danke vielmals für deine Hilfe .... habe nun den von dir vorgegebenen Quelcode ersetzt .. :D

Das Ergebnis ist, dass die Tabulatoren die vorher am Anfang des Dokuments waren verschwunden sind ... :D

Es steht nur noch ein Satz schief formatiert da ... aber soviel ich weiss stimmt da was mit den zu formatierenden Daten nicht.

Ich denke somit wäre das Problem wieder einmal behoben und ich bedanke mich nochmals für deine Hilfe .. :D

grüsse aus Zürich

Alexander