gelöst Zeilen und Spalten finden per Batch

Mitglied: Maffi

Maffi (Level 1) - Jetzt verbinden

06.01.2009, aktualisiert 17:55 Uhr, 5157 Aufrufe, 25 Kommentare

Hallo liebe Gemeinde, ich habe folgendes Problem, ich habe ein Programm was mir folgende daten in einer datei ausgibt:

01380006100
014810000284
017300000002231
017360000002231
0152002Privat
0173101Testmann
0173301Testmann
0133102Otto
0133302Otto
017310312021945
0153303120245
023310644141 Dortmund
023330644141 Dortmund
0253107Wetsfalendamm 40
0253307Wetsfalendamm 40
01031101
01036211
01380006200
014810000102
017300000002231
017360000002231
014410400000
017620006012009
0108404N

Testmann ist der Nachname und Otto der vorname, die zahlen sind von kunde zu kunde anders, ich brauche nur den vor und nachnamen in einem textdukument, die zahlen sind immer andes, ich müsste quasi nach buchstaben suchen, die zeilen bleiben eig. immer gleich nur die zahlen könnten mal mehr oder mal weniger sein.

Danke im Vorraus
Manuel
Mitglied: 60730
06.01.2009 um 17:50 Uhr
Servus,

wenn ich den Inhalt der Datei und deine Frage richtig verstehe willst du alle Nicht Nummern aus der Textdatei herauslösen.
Aber woher soll das Script dann zwischen Vor/Nach Namen und Ortsangaben unterscheiden?

Bzw. Westfalendamm 40 - ganz ohne (Haus)Nummer ?

Führe dein "problem" doch bitte etwas genauer aus.

Gruß
Bitte warten ..
Mitglied: Maffi
06.01.2009 um 18:18 Uhr
Ich brauch nur den vor und nachnamen, unterscheiden könnte man das mit den zeilen, die sind immer gleich, die nummer, die straße ect. brauch ich nicht, mir reich vor und nachname in einer textdatei am besten untereinander.
Bitte warten ..
Mitglied: 60730
06.01.2009 um 18:22 Uhr
ich versteh dich nicht.
und mir widerstrebt es eigentlich Grußlos begrüßt zu werden

0173101Testmann
0173301Testmann
0133102Otto
0133302Otto
017310312021945
0153303120245
023310644141 Dortmund
023330644141 Dortmund
0253107Wetsfalendamm 40
0253307Wetsfalendamm 40

Ich brauch nur den vor und nachnamen
?
unterscheiden könnte man das mit den zeilen, die sind immer gleich
???
0173101 ist ungleich 0133102 und ungleich 023310644141 und unterscheidet sich auch von 0253107

Führe dein "problem" doch bitte etwas genauer aus.
war offensichtlich falsch Formuliert.

* Bist du dir sicher, das die Daten passen?
* Aber woher soll das Script dann zwischen Vor/Nach Namen und Ortsangaben unterscheiden?

Grußlos zurück
Bitte warten ..
Mitglied: Maffi
06.01.2009 um 18:28 Uhr
ich habe das:

Pat.bdt inhalt:
01380006100
014810000284
017300000002231
017360000002231
0152002Privat
0173101Testmann
0173301Testmann
0133102Otto
0133302Otto
017310312021945
0153303120245
023310644141 Dortmund
023330644141 Dortmund
0253107Wetsfalendamm 40
0253307Wetsfalendamm 40
01031101
01036211
01380006200
014810000102
017300000002231
017360000002231
014410400000
017620006012009
0108404N

und daraus möchte ich haben
pat.txt
Testmann
Otto

hier mal eine andere pat.bdt

01380006100
014810000287
017300000006703
017360000006703
0282002AOK Westfalen-Lippe
0153101Abano
0153301Abano
0143102Daniel
0143302Daniel
017310307091998
0153303070998
023310658239 Musterstadt
023330658239 Musterstadt
0213107Klusenweg 5a
0213307Klusenweg 5a
01031102
01036212
01380006200
014810000102
017300000006703
017360000006703
014410418111
017620006012009
0108404N
Bitte warten ..
Mitglied: 60730
06.01.2009 um 18:34 Uhr
In der einen Datei sind die gesuchten Infos in Zeile 7 & 8 in der anderen wohl auch?

richtig [_]
falsch [_]

und sind die gesuchten Daten immer in Zeile 7 und 8?

richtig [_]
falsch [_]
Bitte warten ..
Mitglied: Maffi
06.01.2009 um 18:39 Uhr
mhh ist das nicht ein und die selbe frage nur anders formuliert? aber

richtig
richtig
Bitte warten ..
Mitglied: bastla
06.01.2009 um 19:37 Uhr
Hallo Maffi und TimoBeil!

Wenn aus den Zeilen 7 und 8 demnach jeweils der Zeileninhalt ab der ersten "Nicht-Ziffer" benötigt wird, könnte das etwa so gehen:
Für den Fehlerfall (Zeile 7 oder 8 enthält nur Ziffern oder ist leer) wird derzeit nur eine Fehlermeldung ausgegeben (und auf einen Tastendruck gewartet).

Grüße
bastla

[Edit] Fehlerbehandlung etwas verbessert [/Edit]
Bitte warten ..
Mitglied: miniversum
07.01.2009 um 14:09 Uhr
Wenn ich mir die dateien so ansehe drängt sich mir der Verdacht auf das die Zahlen davor immer 7Stellig sind. Wenn das wirklich das Fall wäre wäre die ganze sucherei auch unnötig und würde das ganze wesentlich vereinfachen. Aber das kann nur Maffi (Manuel) beantworten.
Bitte warten ..
Mitglied: bastla
07.01.2009 um 14:13 Uhr
@miniversum

Hatte ich aufgrund von
die zeilen bleiben eig. immer gleich nur die zahlen könnten mal mehr oder mal weniger sein.
anders interpretiert (und wäre ansonsten auch weniger spannend gewesen ) - allerdings kann das wirklich nur Maffi genau wissen ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
07.01.2009 um 15:22 Uhr
Servus Bastla & Miniversum & Maffi,

das mit den 7stellen (wenn es denn so wäre) macht aber auch nichts denn die Strasse hat auch nur 7 stellen.
Bzw. offensichtlich jede "zahlenkollone" besteht aus 7 Nummern - bei manchen folgt eine Nummer (PLZ).

Da ich gestern meine Frage falsch gestellt habe - versuche ichs also nochmal:

In der einen Datei sind die gesuchten Infos sowohl in Zeile 6 & 7 sowie in 8 & 9.

Gruß
Bitte warten ..
Mitglied: Maffi
07.01.2009 um 16:29 Uhr
Also es können auch mal mehr zahlen sein, vor den Namen, Ja sowohl in Zeile 6&7 als auch in 8 &9 sind die daten vorhanden.

Das Script läuft super, dankeschön, nur noch eine kleine frage, den vornamen finde ich in der Variable %name% finde ich auch irgendwo den Nachnamen? würde gerne von da aus weitergehen, ohne über die txt zu gehen.

gruß Manuel
Bitte warten ..
Mitglied: bastla
07.01.2009 um 16:50 Uhr
Hallo Maffi!

Ersetze das "Hauptprogramm" (die Zeilen 1 bis 10) durch
Zur Sicherheit vielleicht noch ein
unmittelbar an den Anfang des Unterprogrammes ":ProcessLine" - dann kannst Du nach jeder "for"-Schleife einfach kontrollieren, ob ein Name extrahiert werden konnte und entsprechend darauf reagieren (zB vor Zeile 9 neu):
Das würde dann auch das allgemeine Error-Handling im Unterprogramm überflüssig machen (anstelle von "goto :Error" einfach "goto :eof") ...

Grüße
bastla

[Edit] Fehlende Anführungszeichen in den Zeilen 9 und 11 ergänzt. [/Edit]
Bitte warten ..
Mitglied: Maffi
12.01.2009 um 10:46 Uhr
Wenn ich die Variablen Vorname und Nachname ausgebe, sagt er mir, sie seien leer???
Bitte warten ..
Mitglied: bastla
12.01.2009 um 13:21 Uhr
Hallo Maffi!

Die (bis vorhin ) in den Zeilen 9 und 11 am Ende fehlenden Anführungszeichen sollten eigentlich nicht der Grund dafür sein ...

Poste doch bitte einmal den aktuellen Stand Deines Batches (vorzugsweise zwischen Code-Tags).

Grüße
bastla
Bitte warten ..
Mitglied: Maffi
12.01.2009 um 16:33 Uhr
hier mal der relevante teil
[code]
setlocal
set "Ein=D:\Pat.bdt"
set "Aus=D:\Pat.txt"

set "Ziffern=0123456789"
if exist "%Aus%" del "%Aus%"

for /f "tokens=1-2 delims=:" %%a in ('findstr /n "^" "%Ein%"^|findstr /b "7:"') do set "Zeile=%%b" & call :ProcessLine %%i
set "Nachname=%Name%
for /f "tokens=1-2 delims=:" %%a in ('findstr /n "^" "%Ein%"^|findstr /b "8:"') do set "Zeile=%%b" & call :ProcessLine %%i
set "Vorname=%Name%"

echo %vorname%
echo %nachname%


goto :eof
:ProcessLine
if not defined Zeile goto :Error
set /a Z=-1
:Loop
set /a Z+=1
call set Zeichen=%%Zeile:~%Z%,1%%
if not defined Zeichen goto :Error
echo %Ziffern%|findstr "%Zeichen%">nul && goto :Loop

call set "Name=%%Zeile:~%Z%%%"
>>"%Aus%" echo %Name%
goto :eof

:Error
echo In Zeile %1: "%Zeile%" konnte kein Name gefunden werden!
pause
goto :eof
[/code]
Bitte warten ..
Mitglied: 60730
12.01.2009 um 16:37 Uhr
Servus,

meine Verwirrend bezeichneten Böcke wurden als Biber erkannt und verschwinden daher, damit es nicht undurchschaubar wird
Merci an Bastla und seine wachen Augen

PS: Code bitte in <> nicht in [] Klammern

Gruß
Bitte warten ..
Mitglied: bastla
12.01.2009 um 16:49 Uhr
@TimoBeil
Die von Dir bemängelten "Böcke" sind eigentlich "Biber" und sollten daher nicht verändert werden (bitte gelegentlich testen) ...

@Maffi
Sorry - Dein eben geposteter Code und Deine am 06.01.2009 um 18:28:05 Uhr dargestellten Inhaltsbeispiele erzeugen bei mir die gewünschten Ausgaben, was den Verdacht nahelegt, dass Deine Ausgangsdatei die Ursache des Problems sein könnte (ev Unicode?) ...

Grüße
bastla
Bitte warten ..
Mitglied: Maffi
12.01.2009 um 17:07 Uhr
Ok, hab den Fehler gefunden, falsche Pfadangabe, mein fehler Pat.bdt wurde nicht gefunden^^ bis hier hin erstmal danke,

noch ein kleines Problem, wenn ich jetzt

echo "%Nachname%_%Vorname%"

dann bekomm ich ausgegeben
Testmann _Otto ich brauche aber
Testmann_Otto

also da ist ein leerzeichen, kann ich das irgendwie umgehen?

grüße
Manuel
Bitte warten ..
Mitglied: 60730
12.01.2009 um 17:10 Uhr
Servus Manuel,

auch auf die Gefahr das ich wieder daneben liegen sollte

set "Nachname=%Name%
ändern in:
set "Nachname=%Name%"
Gruß
Bitte warten ..
Mitglied: bastla
12.01.2009 um 17:17 Uhr
@TimoBeil
Nix gegen Deine Augen - hast völlig Recht (dabei hatte ich das doch oben schon nachgetragen) ...

Leider wird beim Kopieren aus einem Code-Block auch immer noch ein Leerzeichen am Ende jeder Zeile angefügt - beides zusammen führt dann zum beschriebenen unerwünschten Ergebnis.

Grüße
bastla
Bitte warten ..
Mitglied: Maffi
12.01.2009 um 19:28 Uhr
Ja danke super, läuft alles Prima, jetzt brauch ich nur noch eine kleine änderung, hat sich spontan ergeben, ich bräuchte noch das geburtsdatum in einer Variable

lg Manuel
Bitte warten ..
Mitglied: bastla
12.01.2009 um 20:04 Uhr
Hallo Maffi!

Dann würde ich spontan zu
als neue Zeilen 12 und 13 raten ...

Grüße
bastla
Bitte warten ..
Mitglied: Maffi
12.01.2009 um 21:43 Uhr
jap klappt super, war auch nicht anders zu erwarten, ist es denn noch möglich das mit punkten zu versehen?

im mom sieht das so aus
21091945
super wäre natürlich 21.09.1945

Grüße Manuel
Bitte warten ..
Mitglied: bastla
12.01.2009 um 21:51 Uhr
Mit einer zusätzlichen Zeile etwa so:
Grüße
bastla
Bitte warten ..
Mitglied: Maffi
12.01.2009 um 22:02 Uhr
Klappt super dankeschön für alles
Bitte warten ..
Heiß diskutierte Inhalte
Netzwerke
Router1, Router2 + Repeater untereinander erreichbar machen (OpenWrt)
WinstarFrageNetzwerke24 Kommentare

Guten Abend! Kurz vorweg ja, ich weiß dass es hier bereits eine Anleitung gibt, wie man verschiedene Netzwerke zusammen ...

Router & Routing
Lancom Router Site to Site Problem mit Außenstellen
gelöst mossoxFrageRouter & Routing24 Kommentare

Guten Tag zusammen, in der Hauptgeschäftsstelle nutzen wir einen Lancom 1781VA Router und haben i.d.R. zwei gleichzeitige IPSec Site ...

Netzwerke
Sporadische Ausfälle im gesamten Heimnetz
gelöst bilbo-dvdFrageNetzwerke20 Kommentare

Guten Morgen, ich habe einen Kabelanschluss bei Vodafone und mein Tarif wurde im März auf CableMax 1000 umgestellt. Ich ...

Router & Routing
RDP nur im internen Netz möglich nicht aber per vpn?
einfach112FrageRouter & Routing18 Kommentare

Hallo zusammen. Beim Kunden habe ich einen Server mit VMWARE laufen. Darauf ein Windows Server 2016 Essentials als VM ...

Sicherheit
Sicherheit oder bessere Benutzbarkeit?
StefanKittelFrageSicherheit17 Kommentare

Hallo, ich habe eine Webanwendung programmiert und sehe mich nun mit einer Frage zur Benutzbarkeit konfrontiert. Bei der Anmeldung ...

Internet
Über meinen WAN ist lidl.de nicht ereichbar
gelöst NetGodFrageInternet16 Kommentare

Hallo zusammen, mit meinem DTAG-Anschluß ist derzeit kein Durchkommen zu www.lidl.de möglich. Zu den selben Zeitpunkten ist es aber ...

Ähnliche Inhalte
Batch & Shell

(Batch): "Find" Befehl nach aktuellem Datum filtern

gelöst unauthorized-userFrageBatch & Shell3 Kommentare

Guten Morgen an alle, für die Dokumentation der Server-Updates habe ich eine winzige *.Bat-Datei geschrieben, welche mir alle installierten ...

Batch & Shell

Find Befehle kombinieren

gelöst IleiesFrageBatch & Shell2 Kommentare

Hallo Zusammen, Im Ordner 'C:\Test' befinden sich einige Dateien. Manche davon enden auf '.bak' oder '.db'. Mit diesen beiden ...

Batch & Shell

BATCH: For-Schleife mit type und find laufbar machen

gelöst KartoffelpelleFrageBatch & Shell6 Kommentare

Guten Tag, ich habe folgendes Problem. Ich habe eine XML-Datei, die etwa wie folgt aussieht: Ich möchte gern den ...

Backup

Find-Befehl - Es hakt gerade

it-fraggleFrageBackup1 Kommentar

Vielleicht sollte ich endlich schlafen gehen, aber DAS muss ich noch zuende machen. Wo ist der Fehler? In /media/backups/ ...

Linux

Find Ausgabe in formatierte text Datei umleiten

gelöst MadM4xFrageLinux5 Kommentare

Nabend, lese mich gerade ein wenig im Umgang mit dem Find Befehl ein und bräucht mal Hilfe. Und zwar ...

Linux

Find duplicate Images on linux command line

gelöst winlinFrageLinux7 Kommentare

Hallo Leute, ich habe eine NextcloudPI Installation und verwalte da drüber meine Fotosammlung. Nun habe ich leider sehr viele ...

Neue Fragen
Administrator Magazin
11 | 2020 Virtualisierung ist aus der IT nicht mehr wegzudenken. In der November-Ausgabe des IT-Administrator Magazins dreht sich der Schwerpunkt um das Thema "Server- und Storage-Virtualisierung". Darin erfahren Sie, wie sich die Virtualisierungstechnologie entwickelt hat, welche Varianten es im Bereich Server und Speicher gibt und wie ...
Neue Beiträge
Neue Jobangebote
Server- und Storage-VirtualisierungServer- und Storage-VirtualisierungBerechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid Cloud