Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

aus mehreren txt. Dateien Zeilen auslesen welche mit der selben Zahl beginnen

Frage Entwicklung Batch & Shell

Mitglied: 46933

46933 (Level 1)

17.04.2007, aktualisiert 18.04.2007, 6577 Aufrufe, 21 Kommentare

Hallöchen alle zusammen.
Ich bin am ende.
Mein Problem sieht folgender massen aus.
ich habe fünf txt Dateien.
Die einzelnen Datensätze beginnen mit einer zehnstelligen Zahl und sind alle verschieden.
Ich möchte jetzt jedoch nur alle Datensätze auslesen und in die Datei Gesamt.txt speichern, welche als 1 Zahl von den 10 Stellen eine 2 hat.
Alle anderen sollen in eine Datei geschrieben werden mit Namen wertlos.txt.

Leider bin ich am Ende meiner Kräfte und meines Wissen

Vielleicht kann mir jemand helfen.

Schon mal danke im voraus.
Mitglied: GODOFWAR
17.04.2007 um 15:14 Uhr
Also damit ich es richtig verstehe

Du hast 5 dateien
darin sind 10 stellige zahlen
z.b. 1234567891

und es soll nur in die datei GESAMT.txt wenn eine 2 darunter ist?
Bitte warten ..
Mitglied: 46933
17.04.2007 um 15:19 Uhr
mal ein beispiel wie die txt dateien aussehen:

255416789A 09.01.05 23.03.06 ....
2444846610 05.07.06 05.08.06 ....
100486131D 10.02.06 10.03.06 ....
3488519753 20.02.99 20.01.00 .....

so sehen alle txt dateien aus.
Ich möchte aber nur die Zeilen die mit 2 beginnen. (in dem Fall wären es die ersten beiden)
Bitte warten ..
Mitglied: Biber
17.04.2007 um 15:58 Uhr
Moin ginivpj,

willkommen im Forum.

Vom CMD-Prompt aus:
01.
for /f "delims=: tokens=3" %i in ('findstr /b "2" d:\temp\*.txt') do @echo %i >>Gesamt.txt
-bzw. im Batch-
01.
:: ---- snipp GetAllBeginningWith2.bat 
02.
for /f "delims=: tokens=3" %%i in ('findstr /b "2" d:\temp\*.txt') do @echo %%i 
Aufruf mit "GetAllBeginningWith2 >gesamt.txt"

Gruss
Biber
Bitte warten ..
Mitglied: miniversum
17.04.2007 um 15:59 Uhr
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /F "delims=" %%a in ('dir *.txt /b /a-D') do ( 
03.
FOR /F "delims=" %%b in ('type %%a') do ( 
04.
set zeile=%%b 
05.
if [!zeile:~0,1!]==[2] ( 
06.
echo !zeile!>>Gesamt.txt 
07.
) else ( 
08.
echo !zeile!>>wertlos.txt 
09.
)
miniversum

edit: [2] statt [ ]
Bitte warten ..
Mitglied: 46933
17.04.2007 um 16:16 Uhr
soweit hab ich es verstanden.
Leider geht es nicht.
Kann es daran liegen das es auch vorkommt das vereinzelte Zeilen mit einem Buchstaben anfangen?
Bitte warten ..
Mitglied: risc2000
17.04.2007 um 16:33 Uhr
Besorge dir grep und cat für Windows, oder wenn es geht nimm ein Linux. Grep bzw. Cat für Windows müsste mit einer Suchmaschine zu finden sein. Öffne eine Konsole, gehe in das Verzeichnis mit den Textdateien. Und gib dann folgende Befehle ein:

cat * | grep "^2" > Gesamt.txt

und für "Wertlos"

cat * | grep -v "^2" > Wertlos.txt
Bitte warten ..
Mitglied: GODOFWAR
17.04.2007 um 16:34 Uhr
also soweit ich miniversum's lösung angesehen habe geht es darum nur das das erster ZEICHEN EINE ZAHL IST.
Bitte warten ..
Mitglied: 46933
17.04.2007 um 16:36 Uhr
vom cmd prombt klappt es super.
nur verstehe ich das mit dem aufruf nicht.
wo rufe ich das auf?
und kann ich alle anderen Daten in die txt wertlos packen?
Bitte warten ..
Mitglied: 46933
17.04.2007 um 16:40 Uhr
ja und das wird das macht probleme.
leider sind in dateien auch ein paar mit buchstaben am anfang.
Da die dateien aber alle sehr lang sind kann mann sie nicht alle einzeln anfassen und diese daten raus löschen.
aktualisiert werden sie auch immer.
der cmd prombt geht aber wunderbar.
Bitte warten ..
Mitglied: miniversum
17.04.2007 um 16:54 Uhr
ups habs grade korrigiert. immer dieser fehlerteufel.
Aber ich hatte da nicth kontrolliert obs eine Zahl ist sondern ob da ÜBERHAUPT etwas steht

miniversum
Bitte warten ..
Mitglied: Biber
17.04.2007 um 20:44 Uhr
Na ja, mit grep und cat ist es mir auch durchaus sympathisch.

Aber der sympathische Weltmarktführer hat uns doch ein paar Regular-Expression-Features in die Findstr.exe eingebaut.
Nehmen wir die doch:

Demo am CMD-Prompt:
01.
>echo GTE2345>test98.txt 
02.
>echo ABC2888>test99.txt 
03.
>echo 2345888>test97.txt 
04.
 
05.
(=20:42:42  D:\temp=) 
06.
>findstr /B /R "[A-Z]*2" d:\temp\test9?.txt 
07.
d:\temp\test97.txt:2345888 
08.
d:\temp\test98.txt:GTE2345 
09.
d:\temp\test99.txt:ABC2888
Also im Batch
01.
::----------snipp FilterNachDer2.bat 
02.
REM alle Zeilen, die mit "A-Z" gefolgt von einer "2" beginnen ins Töpfchen... 
03.
for /f "tokens=3 delims=:" %%i in ('findstr /B /R "[A-Z]*2" d:\temp\*.txt') do @echo >>gesamt.txt 
04.
REM alle Zeilen, die NICHT mit "A-Z" gefolgt von einer "2" beginnen ins Kröpfchen... 
05.
for /f "tokens=3 delims=:" %%i in ('findstr /V /B /R "[A-Z]*2" d:\temp\*.txt') do @echo >>wertlos.txt
Gruss
Biber
Bitte warten ..
Mitglied: risc2000
17.04.2007 um 23:35 Uhr
Hi Biber, kannte die findstr.exe noch nicht. Nutze in der Regel auch lieber die Mittel welche mir vom OS bereit gestellt werden. Gut zu wissen, dass der sympathische Weltmarktführer eine Alternative zu grep entwickelt und in das OS implementiert hat
Bitte warten ..
Mitglied: Biber
18.04.2007 um 08:50 Uhr
Moin nsc2000,

eine Alternative zu grep entwickelt ...

Na ja, "entwickelt".....das habe ich so nicht geschrieben...
Ich habe bewusst nur geschrieben, dass M$ ein paar Features eingebaut hat, die auf richtigen anderen Betriebssystemen schon im letzten Jahrtausend state of the art waren.

Wie die Redmonder wohl zu dem Sourcecode gekommen sein mögen, darüber möchte ich nicht öffentlich spekulieren.
Vielleicht war es ja eine Eigenentwicklung.

Grüsse
Biber
Bitte warten ..
Mitglied: 46933
18.04.2007 um 09:19 Uhr
Hallo Biber.
Danke erst einmal für deine Mühen.
Ich habs probiert im batch.
Kriege aber nur: ECHO ist eingeschaltet (ON).
?????
Bitte warten ..
Mitglied: Biber
18.04.2007 um 09:34 Uhr
Moin ginivpj,

Kriege aber nur: ECHO ist eingeschaltet (ON).
dann probiere doch erstmal den (auf Deine Pfade angepassten) Kern
01.
findstr /B /R "[A-Z]*2" d:\temp\*.txt
Wie sehen den Deine Pfade und Dein angepasster Batch aus?

Gruss
Biber
Bitte warten ..
Mitglied: 46933
18.04.2007 um 09:54 Uhr
01.
findstr /B /R "[A-Z]*2" H:\privat\test\*.txt 
02.
> 
funktioniert.
Da gibt er mir alle Zeilen mit einer 2 als erstes aus.
01.
findstr /V /B /R "[A-Z]*2" H:\privat\test\*.txt
funktioniert auch.
Da sind alle anderen.
Bitte warten ..
Mitglied: 46933
18.04.2007 um 09:58 Uhr
es hat geklappt.
ich hatte %%i vergessen

noch eine frage.
damit er die batch datei, immer wenn sie ausgeführt wird, die dateien Gesamt.txt und wertlos.txt überschreibt???
Bitte warten ..
Mitglied: Biber
18.04.2007 um 10:15 Uhr
Moin ginivpj,

damit er die batch datei, immer wenn sie ausgeführt wird, die dateien Gesamt.txt und wertlos.txt überschreibt???

Dazu als neue zweite Zeile (nach dem "@echo off) ergänzen
01.
 If exist gesamt.txt del gesamt.txt 
02.
If exist garbage.txt del garbage.txt 
03.
.. 
04.
 
Gruss
Biber
Bitte warten ..
Mitglied: 46933
18.04.2007 um 11:22 Uhr
klasse!!!
es funktioniert alles?
kann ich den pfad den auch so deklarieren das er sich ändern kann?
Mein jetziger Pfad ist ja H:\privat\test
was wenn ich jetzt den ordner test auf k oder i packe?
Muß ich denn da den Pfad in der batch datei jedes mal manuell ändern?
Bitte warten ..
Mitglied: Biber
18.04.2007 um 17:11 Uhr
Moin ginivpj,

Du kannst den Pfad dadurch variabel halten, dass Du
  • ihn nur an einer Stelle im Sourcecode stehen hast und
  • ihn als optionalen Parameter (Parameter mit Default) einrichtest

Beispiel
01.
::----------snipp FilterNachDer2.bat 
02.
@echo off & setlocal 
03.
REM ----ab hier anpassen 
04.
REM optionaler erster Parameter 1 == Pfad, wo die Daten sind 
05.
If [%1]==[] (Set "datenpfad=H:\Privat\test") Else Set "Datenpfad=%1" 
06.
Set "ergebnispfad=X:\Auswert" 
07.
If exist %ergebnispfad%\gesamt.txt del %ergebnispfad%\gesamt.txt 
08.
If exist %ergebnispfad%\garbage.txt del %ergebnispfad%\garbage.txt 
09.
REM ----bis hier anpassen 
10.
REM alle Zeilen, die mit "A-Z" gefolgt von einer "2" beginnen ins Töpfchen... 
11.
for /f "tokens=3 delims=:" %%i in ('findstr /B /R "[A-Z]*2" "%datenpfad%\*.txt"') do @echo >>%ergebnispfad%\gesamt.txt 
12.
REM alle Zeilen, die NICHT mit "A-Z" gefolgt von einer "2" beginnen ins Kröpfchen... 
13.
for /f "tokens=3 delims=:" %%i in ('findstr /V /B /R "[A-Z]*2" "%datenpfad%\*.txt"') do @echo >>%ergebnispfad%\wertlos.txt 
14.
::----------snapp FilterNachDer2.bat
Gruss
Biber
Bitte warten ..
Mitglied: 46933
18.04.2007 um 17:17 Uhr
Hat alles super geklappt.
Ich danke für die schnelle Hilfe!
Echt super Forum.

Gruß gini
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst 2 große TXT Dateien vergleichen und Unterschiede in andere Datei schreiben (6)

Frage von sid.pdm zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell: Variablen aus .txt Dateien heraus ausgeben (5)

Frage von Tobiased zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...