Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

automatisch text auslesen

Frage Entwicklung Batch & Shell

Mitglied: Janejones

Janejones (Level 1) - Jetzt verbinden

15.09.2008, aktualisiert 19:43 Uhr, 3963 Aufrufe, 15 Kommentare

Hallo,
ich brauche eure Hilfe, da ich leider keine Programmierkenntnisse habe. Ich habe etliche Textdateien, aus denen ich folgende Zeilen mithilfe einer Batchdatei?? automatisch auslesen möchte:

25 Vorname Name
26 Straße
27 PLZ Stadt

29 Geboren am 01.01.2000
30 Email: name@email.de



Die Zeilen 25, 26, 27, 29 und 30 sollen hintereinander in eine neue Textdatei kopiert werden.
Das soll so aussehen:
Vorname, Name, Straße, PLZ, Stadt, Geburtsdatum, Email
Vorname, Name, Straße, PLZ, Stadt, Geburtsdatum, Email
usw.

Die Wörter "geboren am" und "Email:" sollen aber nicht mit übernommen werden.

Kann mir jemand helfen?
Bzw. gibt eine Software, die soetwas kann?
Vielen Dank,
Jane
Mitglied: Janni
15.09.2008 um 17:17 Uhr
so ungefähr:

01.
:: Echos aus und alle Variablen sind nur in der Batch definiert 
02.
@echo off & setlocal 
03.
 
04.
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "c:\Textdatei.txt"') do ( 
05.
    if %%i == 25 set NameVorname=%%j 
06.
    if %%i == 26 set Straße=%%j 
07.
    if %%i == 27 set PLZStadt=%%j 
08.
    if %%i == 29 set Geburtstag=%%j 
09.
    if %%i == 30 set Email=%%j 
10.
11.
 
12.
echo %NameVorname%, %Straße%, %PLZStadt%, %Geburtstag%, %Email%>> neueTextdatei.txt
Bitte warten ..
Mitglied: Janejones
15.09.2008 um 17:34 Uhr
es geht leider nicht... vielleicht noch ein Hinweis: in der Datei steht nicht Vorname, Name etc. sondern der richtige Name usw. (Adresse)
Die Textdateien haben auch alle einen unterschiedlichen Dateinamen...
Vielen Dank, vielleicht kannst du ja noch einmal schauen,
Jane
Bitte warten ..
Mitglied: Janejones
15.09.2008 um 17:56 Uhr
habe es gerade noch einmal probiert, es werden aber nur Kommas übertragen...
Bitte warten ..
Mitglied: bastla
15.09.2008 um 18:12 Uhr
Hallo Janejones und willkommen im Forum!

es werden aber nur Kommas übertragen...
... was daran liegen könnte, dass die verwendete Datei ("c:\Textdatei.txt") bei Dir in Name oder Aufbau abweicht ...

... da die dargestellte Lösung mit einer von mir erstellten Testdatei sehr wohl ein entsprechendes Ergebnis (die Inhalte der genannten Zeilen) liefert.
Falls es eine Liste der Dateien oder einen Ordner, dessen Inhalt ausschließlich aus derartigen Dateien besteht, gibt (was Deiner Beschreibung allerdings nicht zu entnehmen war), könnten durch eine zusätzliche "for"-Schleife natürlich auch alle diese Dateien bearbeitet werden.
@Janni
Etwas ändern würde ich (neben dem Weglassen der Leerzeichen vor und nach den "==" in den Zeilen 5 bis 9) die Ausgabezeile auf:
01.
echo %NameVorname%,%Straße%,%PLZStadt%,%Geburtstag:Geboren am= %,%Email:Email: =%>>C:\neueTextdatei.txt
Das sind allerdings Details, die den Ablauf nicht beeinflussen.

Grüße
bastla
Bitte warten ..
Mitglied: Janejones
15.09.2008 um 18:19 Uhr
die txt dateien sind alle in einem Ordner, haben aber alle einen unterschiedlichen Dateinamen... der Aufbau der Textdateien ist immer gleich

Noch eine Frage: muss immer der Pfad eingetragen werden oder reicht es wenn die bat, die textdateien und die neuetextdatei in einem Ordner liegen, nur den Dateinamen zu schreiben...?
Bitte warten ..
Mitglied: Janejones
15.09.2008 um 18:22 Uhr
noch einmal mit den änderungen probiert, jetzt steht aber folgendes in der neuetextdatei:

,,,Geboren am=Email:Email: =
Bitte warten ..
Mitglied: bastla
15.09.2008 um 18:34 Uhr
Hallo Janejones!

Dann zum Testen die Version für alle ".txt"-Dateien eines Ordners (Zeile 2):
01.
@echo off & setlocal 
02.
set "Dateien=C:\Ordner mit Textdateien\*.txt" 
03.
set "Neu=C:\neueTextdatei.txt" 
04.
 
05.
if exist "%Neu%" del "%Neu%" 
06.
for %%a in ("%Dateien%") do call :ProcessFile "%%a" 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
echo Bearbeite: %~1 
11.
for /f "tokens=1* delims=:" %%i in ('findstr /n $ "%~1"') do ( 
12.
    if "%%i"=="25" set "NameVorname=%%j" 
13.
    if "%%i"=="26" set "Strasse=%%j" 
14.
    if "%%i"=="27" set "PLZStadt=%%j" 
15.
    if "%%i"=="29" set "Geburtstag=%%j" 
16.
    if "%%i"=="30" set "Email=%%j" 
17.
18.
>>"%Neu%" echo %NameVorname%,%Strasse%,%PLZStadt%,%Geburtstag:Geboren am =%,%Email:Email: =% 
19.
goto :eof
Noch eine Anmerkung: Damit die entstehende "neueTextdatei" nicht ebenfalls verarbeitet wird, sollte diese in einem anderen Ordner (wie in meinem Beispiel) liegen oder etwa den Typ ".csv" erhalten.

Grüße
bastla

P.S.: Das Setzen von Anführungszeichen ist eines meiner (glücklicher Weise eher ungefährlichen ) Hobbies ...
Bitte warten ..
Mitglied: Janejones
15.09.2008 um 18:43 Uhr
das ist schon fast richtig!!!!!!!!!
Er übernimmt aber nicht die Email, da steht nur "Email: ="

und zwischen Vorname und Name sowie PLZ und Stadt sollte ein Komma sein...

Vielen Dank,
Jane
Bitte warten ..
Mitglied: bastla
15.09.2008 um 18:56 Uhr
Hallo Janejones!

zwischen Vorname und Name sowie PLZ und Stadt sollte ein Komma sein...
Ändere die Zeilen 12, 14 und 18 wie folgt:
01.
    if "%%i"=="25" for /f "tokens=1*" %%n in ("%%j") do (set "Name=%%n" & set "Vorname=%%o") 
02.
 
03.
    if "%%i"=="27" for /f "tokens=1*" %%n in ("%%j") do (set "PLZ=%%n" & set "Stadt=%%o") 
04.
 
05.
>>"%Neu%" echo %Name%,%Vorname%,%Strasse%,%PLZ%,%Stadt%,%Geburtstag:Geboren am =%,%Email:Email: =%
Er übernimmt aber nicht die Email, da steht nur "Email: ="
Du solltest prüfen, ob die Mailadresse tatsächlich in Zeile 30 steht (und sich dort nicht vielleicht eine Leerzeile befindet) ...

Grüße
bastla
Bitte warten ..
Mitglied: Janejones
15.09.2008 um 19:03 Uhr
das mit Name, Vorname hat super geklappt, nur mit der Email noch nicht, es steht immer noch "Email: =" da
die Email steht wirklich in Zeile 30, gleich unter dem Geburtsdatum und das funktioniert ja wunderbar

liegt es vielleicht an dem Leerzeichen Email: test@test.de
Jane
Bitte warten ..
Mitglied: Biber
15.09.2008 um 19:08 Uhr
@bastla
Du solltest prüfen, ob die Mailadresse tatsächlich in Zeile 30 steht (und sich dort nicht vielleicht eine Leerzeile befindet) ...
...oder aber, ob es schon in der Zeile 30 steht, diese aber die letzte Zeile in der gesamten Textdatei ist und kein CRLF, sondern nur ein CR enthält.
Dann würde diese Zeile nämlich NICHT bei der findstr-Prüfung auf "$" erfasst werden.

Um das auszuschliessen, könnte man/frau die Prüfung von "$" (Zeilenende=CRLF) auf Zeilenanfang (Irgendein noch so kleines Zeichen nach einer mit CRLF beendeten Zeile) ändern.
... 
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%~1"') do ( .....
Für wahrscheinlicher allerdings halte ich es, dass der Such/Ersetzstring "Email: " nicht buchstabengetreu vorhanden ist....
Steht da evtl "Mail:" statt "Email" oder doch kein Doppelpunkt+Leerzeichen dahinter...?

Grüße
Biber
....oder aber heute ist Montag und Jane testet mit der einzigen Testdatei OHNE eingetragene Mailadresse...
Bitte warten ..
Mitglied: bastla
15.09.2008 um 19:14 Uhr
@Biber
Für wahrscheinlicher allerdings halte ich es, dass der Such/Ersetzstring "Email: " nicht buchstabengetreu vorhanden ist....
... was aber eigentlich nur zu keiner Ersetzung und daher der Verwendung der gesamten Zeile führen sollte ...

@Janejones
Sollte Bibers erste Annahme nicht zutreffen (seine vorgeschlagene Zeile kannst Du aber auf jeden Fall als neue Zeile 11 verwenden), könntest Du noch zwischen Zeile 11 und Zeile 12 einfügen:
01.
    if %%i gtr 28 if %%i lss 33 echo %%i#%%j#
Damit kannst Du nachvollziehen, was vom Batch als Zeilen 29 bis 32 gelesen wird.

Grüße
bastla
Bitte warten ..
Mitglied: Janejones
15.09.2008 um 19:18 Uhr
ich habe noch mal alle txt überprüft und in Zeile 30 steht überall buchstabengetreu
Email: test@test.com

die Zeile
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%~1"') do
habe ich auch geändert, doch das Ergebnis bleibt gleich...

woran könnte es noch liegen? ich könnte auch mal eine beispiel txt per email schicken
Bitte warten ..
Mitglied: bastla
15.09.2008 um 19:26 Uhr
Hallo Janejones!

Noch ein Versuch:
01.
    if "%%i"=="30" for /f "tokens=1*" %%n in ("%%j") do set "Email=%%o" 
02.
03.
>>"%Neu%" echo %Name%,%Vorname%,%Strasse%,%PLZ%,%Stadt%,%Geburtstag:Geboren am =%,%Email% 
04.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Janejones
15.09.2008 um 19:43 Uhr
vielen, vielen Dank, das hat jetzt geklappt...
Ihr seid echt super!
Viele Grüße
Jane
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Auslesen einer Datei mit einem Anführungszeichen im Text
Frage von c20082005Batch & Shell1 Kommentar

Hallo zusammen, ich habe ein Problem, das ich auch nach einiger Recherche im Internet nicht gelöst bekomme: Ich habe ...

Exchange Server
Text automatisch in Kalender eintragen
gelöst Frage von diematrix125Exchange Server2 Kommentare

Hallo! Ich stehe gerade vor folgendem Problem: Wir haben auf unserem Exchange 2010 verschiedene Meeting Räume erstellt. Bei einigen ...

Batch & Shell
Batch: Auslesen von Dateinamen aus Text und Kopieren dieser.
gelöst Frage von gumpo03Batch & Shell2 Kommentare

Hallo. Ich sitze seit ungefähr einer Stunde an einem Problem, dass ich gern endlich lösen würde: Ich habe eine ...

Batch & Shell
Text Zeilenweise auslesen und variable überprüfen
Frage von BruendlBatch & Shell11 Kommentare

Moin Moin, ich habe eine Textdatei mit folgendem Inhalt: ich möchte jetzt gerne die beiden Werte, die von einem ...

Neue Wissensbeiträge
Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 1 StundeMicrosoft Office2 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 7 StundenErkennung und -Abwehr2 Kommentare

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücken Spectre, Meltdown ...

Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office9 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Batch & Shell
Dateien verschieben mit batch
gelöst Frage von michi-ffmBatch & Shell13 Kommentare

Hallo Zusammen hat jemand evtl eine Idee? Zunächst hier das Skript: Leider werden keine UNC-Pfade unterstüzt, kann mir jemand ...