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

Mittels Batch eine Textdatei auslesen und gleichzeitig neue schreiben

Frage Entwicklung Batch & Shell

Mitglied: hanswurst12

hanswurst12 (Level 1) - Jetzt verbinden

30.06.2009, aktualisiert 18.10.2012, 7259 Aufrufe, 6 Kommentare

Ich möchte mit einer Batch-Datei einen Ordner voller Textdateien auslesen. Diese sollen nun ausgelesen werden. Der Inhalt dieser Textdateien soll in eine seperate Textdatei nacheinander stehen.

Hallo,

ich habe hunderte Textdateien.
Diese sollen nun nacheinander abgearbeitet werden und einige Formatierungen dabei entfernen und schließlich das Ergebnis in eine txt Datei schreiben.

Beispiel:

LOG.txt sieht so aus:

TRASH
TRASH
USER: (TAB) ABC
COMPUTERNAME: (TAB) DEF
DATE: (TAB) GHI
Davon sind hunderte in einem Ordner.

Nun soll jede Textdatei ausgelesen werden und das Ergebnis in eine AUSWERTUNG.txt fließen.

Also in etwa so:

USER - COMPUTERNAME
USER VON FILE1 COMPUTER VON FILE1
USER VON FILE2 COMPUTER VON FILE2
...
usw.


Wie genau mache ich das? Hat jemand eine Idee?


Danke
hanswurst12
Mitglied: LotPings
30.06.2009 um 17:16 Uhr
Willkommen im Forum.

Dein gewähltes Synonym lässt nicht unbedingt auf ernsthafte Absichten schließen (wir hatten hier letztens so viele Kasper) und deine Angaben reichen nicht aus, eine Beziehung zwischen den Daten und der Auswertung herzustellen.

Vielleicht überarbeitest du das nochmal.

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
30.06.2009, aktualisiert 18.10.2012
... oder nimmst eine Anleihe bei diesem Beitrag, wobei die "for /f"-Zeilen für Deine Daten generell einfach mit
for /f "tokens=1*" %%a ...
beginnen könnten und Dein gewünschter Wert dann immer in %%b zu finden sein sollte. Ein "/b" beim "findstr" könnte zusätzlich für mehr Sicherheit sorgen (siehe "findstr /?").

Grüße
bastla
Bitte warten ..
Mitglied: hanswurst12
30.06.2009 um 19:46 Uhr
Danke Bastla, hat nach ein bisschen anpassen super geklappt!

@echo off & setlocal enabledelayedexpansion
set "Verzeichnis=C:\Users\xxx\Documents\LOGS"
set "Typ=txt"
set "Liste=C:\Users\xxx\Documents\LOGS\Liste.txt"

if exist "%Liste%" del "%Liste%"
for %%i in ("%Verzeichnis%\*.%Typ%") do (
for /f "tokens=2*" %%a in ('findstr /i /c:"USER:" "%%i"') do set "Zeile=%%a"
for /f "tokens=2*" %%a in ('findstr /i /c:"COMPUTERNAME:" "%%i"') do echo !Zeile! - %%a
)>>"%Liste%"
Bitte warten ..
Mitglied: Switchblade
12.07.2009 um 21:49 Uhr
Hallo zusammen,

ich hab vor, aus einer Textdatei, die es mehrere Male gibt und auf den Namen "Defcore.txt" lautet, zwei Zeilen zu entnehmen und in eine neue Textdatei einzufügen.

Das Beispiel von hanswurst12 habe ich genommen und entsprechend abgeändert:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set "Verzeichnis="D:\Full Version Games\Clonk Rage\ModernCombat.c4d"" 
03.
set "Typ=txt" 
04.
set "Liste="D:\Full Version Games\Clonk Rage\ID.txt"" 
05.
 
06.
if exist "%ID%" del "%ID%" 
07.
for %%i in ("%Verzeichnis%\*.%Typ%") do ( 
08.
for /f "tokens=2*" %%a in ('findstr /i /id="%%i"') do set "Zeile=%%a" 
09.
for /f "tokens=2*" %%a in ('findstr /i /Name="%%a"') do echo !Zeile! - %%a 
10.
)>>"%ID%"
Leider behauptet der jetzt, das Verzeichnis würde nicht exisitieren, dabei hab ich extra die Anführungszeichen hinzugesetzt. Oder bin ich bei meiner Idee komplett falsch?

Das Verzeichnis "ModernCombat.c4d" ist ein SVN Verzeichnis und wird regelmäßig geupdatet. Da ich die entsprechenden IDs in den Scripts immer wieder verwende, ist eine Liste gut, in der alle verwendeten IDs gelistet sind. Diese IDs sind in der "Defcore.txt" hinterlegt. Zusätzlich zur Zeile "ID=xxxx" brauch ich aber auch noch "Name=xxxx" sonst weiß ich ja nicht, was es für ein Objekt ist.

Vielleicht kann mir jemand eine helfende Hand reichen.

Gruß,
Switchblade
Bitte warten ..
Mitglied: Biber
12.07.2009 um 23:19 Uhr
Moin Switchblade,

willkommen im Forum.
Ich habe Deinen Schnipsel mal in Code-Tags gesetzt.
Wenn Diu noch mal mit "Editieren" rein gehst, dann siehst Du für das nächste Mal wie leicht das geht.

Zu Deiner Frage:
Schau Dir nochmal kurz die Hilfe zu FindStr an (FindStr /? am CMD-Prompt)

So wie Du es in dem FOR-Anweisungsblock formiliert hast, werden /Id ind /Name als Findstr-Parameter aufgefasst, falls der Schnipsel so weit kommen würde.
Aber vorher geht auch schon irgendwas schräg mit den Variablen
  • %id% (die nie gesetzt wird) und
  • %Liste% (die gesetzt, aber nie verwendet wird.

Grüße
Biber
Bitte warten ..
Mitglied: Switchblade
13.07.2009 um 18:10 Uhr
Hallo Biber,

danke für die Begrüßung.

Okay, die Code-Tags sind wie die HTML-Tags für's fett und kursiv machen etc., das hab ich verstanden.

Schnipsel ist gut, die Batch-Datei enthält ja nicht mehr. Ist also vollständig. ;)

Die Variablen sind wahrscheinlich nötig, da sich die entsprechende ID immer wieder ändern kann und aus Zahlen, Buchstaben sowie Underline _ bestehen kann. Für die Liste brauch ich dann wohl keine.

Ehrlich gesagt hab ich keinen Schimmer wie die Datei abläuft, bei ganz einfachen Konstrukten ist das für mich nachvollziehbar. In diesem Fall hab ich jedoch wirklich nur kopiert und die entsprechenden Stellen so abgeändert wie sie für mich Sinn ergeben haben.

Zeile 6 kann ich wohl getrost löschen, %%i stellt wohl einen Integer (als Zahl) dar. Der %%a dann einen Buchstabencode. %Verzeichnis% gibt das oben mit set angegebene Verzeichnis an. Dasselbe für die anderen beiden Anweisungen.

Für For hab ich mir auch nochmal die Hilfe angesehen. %%i und %%a sind demnach Variablen für ein Batchprogramm, so wie ich sie brauche. Nur werden die beiden wohl gar nicht benutzt, weil sie nicht benannt sind?

Gruß,
Switchblade

Edit:
Okay, nach einer ernsthaften Auseinandersetzung mit dem FINDSTR Befehle, kann ich nun ein Ergebnis vorweisen:

01.
@echo off 
02.
findstr /S /I /D:ModernCombat.c4d;ModernCombat.c4f /C:"Name=" /C:"id=" defcore.txt >>IDandNAMES.txt
Groß- und Kleinschreibung wird ignoriert. In beiden SVN Verzeichnissen wird nach den Zeichenfolgen "id=" und "Name=" gesucht und diese gefundenen Ergebnisse in eine Textdatei mit dem Namen "IDandNAMES.txt" geschrieben.

Nochmals vielen Dank an Biber, der mich auf die richtige Spur brachte.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen (7)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...