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

Batch problem (beim auslesen mehrerer .txt Dateien)

Frage Entwicklung Batch & Shell

Mitglied: soga307

soga307 (Level 1) - Jetzt verbinden

13.10.2009 um 12:34 Uhr, 6818 Aufrufe, 9 Kommentare, 1 Danke

Problem mit dem sammeln von informationen aus mehreren txt dateien und diese dann in ein txt file zu packen

hallo liebe Community,

mir wurde die Aufgabe erteilt eine batch datei zu basteln die 2 Informationen aus vielen (hunderten) einzel txt files zusammenfügt und in eine neue datei (txt) packt!
habe nun schon einige versuche gewagt jedoch immer nur mit mäßigen Erfolg vielleicht könnt ihr mir ja weiterhelfen.

Beschreibung:
Die .txt Files befinden sich alle in einem Ordner die dateien heißen alle ungefähr gleich beginnent mit einem d und enden mit einem c
Bsp.:

d1234c

in diese txt Files sind einige Informationen drin die nicht bennötigt werden zum auswerten (z.b. pings und server adressen)
Wichtig in den txt files ist nur die erste und letzte Stelle. D.h. in zeile 1 steht der name und in der letzten Zeile ein Datum!

bsp.:

d1234c
....
....
......
10.10.2010

Diese beiden Informationen sollen nun in eine extra txt file gepackt werden (kopiert werden)... da es sich hier um nicht nur eine Datei handelt sondern um viele bin ich an der stelle etwas ratlos wie ich in einem Batch file angeben kann das er mehr als nur eine Datei öffnen und der die entsprechenden Einträge suchen soll... oder anders gefragt ist dies überhaupt möglich und wenn ja wie?

Hoffe auf eure Hilfe

Liebe Grüße

euer Soga
Mitglied: bastla
13.10.2009 um 13:20 Uhr
Hallo soga307 und willkommen im Forum!

Unter der Annahme, dass es sich jeweils um komplette Zeilen handelt, etwa so;
01.
@echo off & setlocal 
02.
set "Erg=D:\Ergebnis.txt" 
03.
set "Ordner=D:\Daten" 
04.
 
05.
if exist "%Erg%" del "%Erg%" 
06.
for %%i in ("%Ordner%\d*c.txt") do call :ProcessFile "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
set /p Zeile1=<%1 
11.
for /f "usebackq delims=" %%a in (%1) do set "ZeileN=%%a" 
12.
>>"%Erg%" echo %Zeile1%_%ZeileN% 
13.
goto :eof
Soferne diese Zeilen noch zerlegt werden müssen, wäre vorweg zu klären, nach welchen Kriterien die Zerlegung erfolgen soll.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
13.10.2009 um 13:22 Uhr
Moin soga307,

willkommen im Forum.

Wenn du dir die Aufgabenstellung in kleinen Häppchen vornimmst, dann ist es gar nicht so schwer..

Also, es gibt irgendwo ein Laufwerk, einen Pfad und darin interessieren uns nur die Dateien "d*c.txt".
Und wir gehen mal davon aus, dass wir die einzeln anfassen müssen, also ist eine FOR-Anweisung das richtige Batch-Werkzeug.

Mach den ersten Test am CMD-Prompt, ob kein Denkfehler dabei war:
01.
FOR %i in (D:\EinPfad\ZuDenLogfies\d*c.txt) do @echo %i  
02.
-oder- 
03.
FOR %i in ("D:\Ein Pfad mit Leerzeichen\Zu Den Logfies\d*c.txt" ) do @echo %i  
04.
 
Jede einzelne gefundene d*c.txt-Datei %i hat eine erste Zeile und eine letzte Zeile, die dich interessieren.

Die erste Zeile einer Textdatei bekommst du am CMD-Prompt/im Batch mit
01.
Set /p "zeile1=<D:\eineGefundeneDatei.txt"   
02.
Echo %zeile% 
03.
-- oder, wenn es getestet ist natürlich 
04.
Echo %zeile% >>m:\eine\NeueDatei.txt
Die letzte Zeile einer Textdatei bekommst Du wiederum mit einer FOR/F-Anweisung:
01.
FOR /F "delims=" %i in (D:\Eine\textdatei.txt) do Set "letzteZeile=%i" 
02.
Echo %letzteZeile%
Alle Beispiele sind für den proof-of-concept am CMD-Prompt.
Deshalb haben alle Laufvariablen (%i) nur EIN Prozentzeichen vor dem Buchstaben.
In einem Batch müssen es deren zwei sein (%%i)

Grüße
Biber

[Edit] Hallo bastla!
Menno, sogar die FDP hat sich total gewandelt ("...ist jetzt in der Realität angekommen..", heisst es in den Nachrichten.)
Aber du überholst immer noch rechts wie eh und je ...
[Edit]
Bitte warten ..
Mitglied: soga307
13.10.2009 um 13:50 Uhr
Ich danke euch vielmahls ihr habt mir den tag geretet ;)

Gruß

Soga
Bitte warten ..
Mitglied: bastla
13.10.2009 um 16:06 Uhr
@Biber
Aber du überholst immer noch rechts wie eh und je ...
Leicht zu erklären (Stichwort "Massenträgheit") ...

Grüße
bastla
Bitte warten ..
Mitglied: pf1203
11.10.2017 um 16:35 Uhr
Hii,

finde die Lösung von bastla auch perfekt für mich, aber ich brauch statt der ersten und letzten Zeile nur die 3. Zeile.
Wie muss ich also das Skript anpassen, dass mir nur die 3. Zeile ausgelesen wird?

Hoff Ihr könnt mir helfen.

Danke im Voraus.

Grüße
Bitte warten ..
Mitglied: Biber
11.10.2017, aktualisiert um 18:20 Uhr
Moin pf1203,

wenn du eine Variation einer lösung willst, die vor 8 Jahren state of the art war: meinetwegen.
Dazu haben wir auch ein paar Beiträge zu dem Thema "Jede x-te Zeile mit FOR/F rausfieseln" - bitte mal suchen.

Sinngemäß ginge es (am CMD-Prompt) bei einer Beispieldatei z.B. so:
01.
for /f "tokens=1,* delims=:" %i in ('findstr /n $ beispiel.txt') do @if "%i"=="3" echo.%j
Also mit Find /n oder FindStr/n eine zeilennumerierte Version der *.txt-Datei nutzen.
Bei Find/n würde die gesuchte Zeile 3 als "3: eigentlicher Zeileninhalt" vorligen, bei Find/n als "[3] eigentlicher Zeileninhalt".

Aber: mach lieber einen neuen Beitrag auf, dann bekommst du auch ein etwas zeitgemäßere Lösung (z.B. Powershell).

Grüße
Biber
Bitte warten ..
Mitglied: pf1203
12.10.2017 um 08:27 Uhr
Moin Biber,

danke für deine schnelle Antwort.
An sich funktioniert die Lösung, die du mir geschickt hast.
Aber wie setz ich das jetzt in den Code von Bastla ein, damit ich mehrere Dateien in einem Ordner auslesen kann?
Klar wäre eine zeitgemäßere Lösung sinnvoller, aber mein Cheffe will das mit einer Batch, keine Ahnung wieso...

Danke dir schonmal.

Grüße

pf1203
Bitte warten ..
Mitglied: Biber
12.10.2017 um 10:00 Uhr
Moin pf1203,

wenn sich deine Anforderungen ansonsten mit denen der oben angegebenen decken (außer bei dir zeile 3 statt erste und letzte Zeile), dann sollte es reichen, in bastlas Skript die Zeile 11 (die "Arbeitszeile" in :Processfile) durch meine zu ersetzen.

01.
@echo off & setlocal 
02.
set "Erg=D:\Ergebnis.txt" 
03.
set "Ordner=D:\Daten" 
04.
 
05.
if exist "%Erg%" del "%Erg%" 
06.
for %%i in ("%Ordner%\d*c.txt") do call :ProcessFile "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
set /p Zeile1=<%1 
11.
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ "%1"') do @if "%%i"=="3" echo.%%j>>"%Erg%"  
12.
goto :eof
Alles ungetestet, nur durch Copy&Paste zusammengestöpselt.

Und für deinen Chef: "Batchprocessing" im Jahre 2017 ist durchaus auch Powershell.
Ein wirklicher Grund, es NICHT mit Powershell zu machen wäre, wenn dieses bei euch im Unternehmen nicht eingesetzt werden darf.

Grüße
Biber
Bitte warten ..
Mitglied: pf1203
12.10.2017 um 10:05 Uhr
Super, danke!

Genau so brauch ich es!
Ja ich werd mal mit Ihm reden, wieso nicht per PowerShell....

Vielen Dank für die schnelle Hilfe!

Grüße

pf1203
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch mit for txt auslesen?
gelöst Frage von Mohji32Batch & Shell4 Kommentare

Hallo, ich habe mir den "Grundkurs" zu for schleifen im Board angeschaut aber leider nicht das hin bekommen was ...

Batch & Shell
Mit Batch .txt auslesen und benutzen
gelöst Frage von GhostJumperHDBatch & Shell8 Kommentare

Ich habe folgendes Problem Ich möchte das W-Lan überlasten und möchte danach die .bat zur .exe umwandeln. Ich möchte ...

Batch & Shell
Batch: Txt Datei mit mehreren Zeilen auslesen, wandeln und hintereinander wiedergeben
gelöst Frage von MentacorBatch & Shell4 Kommentare

Hallo zusammen, Ich habe eine Frage zu einem Problem mit meiner Batch Meine Frage: Ist es möglich aus einer ...

Batch & Shell
BATCH Txt datei mit mehreren Computernamen auslesen und Daten wie (Namen und Letzte Startzeit auslesen) und in Txt schreiben
gelöst Frage von ITFloriBatch & Shell1 Kommentar

Hallo zusammen, wir müssen bis morgen ein Script schreiben, welches die ganzen Computernamen aus einer Textdatei ausliest und diese ...

Neue Wissensbeiträge
Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 5 StundenMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 18 StundenMac OS X3 Kommentare

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 1 TagDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 1 TagWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Heiß diskutierte Inhalte
Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell25 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1019 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen18 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...