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

Datei auslesen und bestimmte Wörter in neue Datei schreiben mit Batch

Frage Entwicklung Batch & Shell

Mitglied: teklan

teklan (Level 1) - Jetzt verbinden

13.10.2007, aktualisiert 18.10.2012, 6657 Aufrufe, 6 Kommentare

Hallo,

ich habe hier eine große Datei mit vielen Kryptischen Zeichen, aber auch normalen Buchstaben:
(Beispiel-datei-Ausschnitt) "einlesedatei.txt"

...
"name" "-424 25744 582"
"wert" "4 3 24"
"pfad" "daten/name1.rst"
"klname" "sarg_wert12g"
"pfad" "logs/name2.pop"
...

...so, ich möchte nun daraus eine neue Datei, die folgendes Beinhaltet:

/daten/datei1.rst
/logs/datei2.pop

und so weiter, je nachdem wieviele datei-angaben mit .rst oder .pop in der Datei stehen. Wie kann ich das am einfachsten realisieren? Habe leider kaum Ahnung von Batch...bisher hatte ich das etwa gebaut:

@echo off
set PF=einlesedatei.txt
findstr /C:".rst" %PF% > rst.txt
findstr /C:".pop" %PF% > pop.txt
copy rst.txt+pop.txt alle.txt

dadurch habe ich dann eine datei, mit alles Zeilen wo ".rst" und ".pop" vorkommt:
z.B.:

"pfad" "daten/name1.rst"
"pfad" "daten/name1.rst"
"pfad" "daten/name1.rst"
"pfad" "logs/name2.pop"
"pfad" "logs/name2.pop"

Das wäre schritt 1 ^^ ...aber wie kann ich jetzt erreichen das ich eine Datei daraus bekomme die nur:

"pfad" "daten/datei1.rst"
"pfad" "logs/datei2.pop"

beinhaltet(also doppelte Einträge raus)...und dann jeweils -"pfad" "- und -"- (am ende) lösch,t und ein "/" vorne dranhängt?

Kann mir da jemand weiterhelfen helfen?

lg
Mitglied: bastla
13.10.2007 um 14:41 Uhr
Hallo teklan und willkommen im Forum!

Falls Du nicht tatsächlich vorhast (wie in Deinem Beispiel) aus "name1.rst" ein "datei1.rst" zu machen, könnte das so klappen:
01.
@echo off & setlocal 
02.
set "Ein=D:\Ein.txt" 
03.
set "Aus=D:\Aus.txt" 
04.
 
05.
if exist "%Aus%" del "%Aus%" 
06.
set Zuletzt=- 
07.
for /f "tokens=2" %%i in ('findstr ".rst .pop" "%Ein%"^|sort') do call :ProcessLink "%%~i" 
08.
goto :eof 
09.
 
10.
:ProcessLink 
11.
if %1==%Zuletzt% goto :eof 
12.
set Zuletzt="%~1" 
13.
(echo /%~1)>>"%Aus%"
"D:\Ein.txt" wäre dabei Deine "große Datei".

Grüße
bastla
Bitte warten ..
Mitglied: teklan
13.10.2007 um 16:19 Uhr
Super! Das ist genau das was ich suchte!!!

Vielen Dank! ....nur eine Frage hätte ich noch...er findet zwar
jetzt alle "name1.rst" und "name2.pop"
...aber er findet auch "irgendwas_rst" ...das liegt wohl an der angabe "findstrr ".rst .pop""
..hab schon versucht das selber hinzubekommen duch ändern der
Syntax von findstr ..aber kamen nur Fehlermeldungen ;) ...kennst du die
richtige Syntax...oder muss man die "irgendwas_rst" erst danach rausfilter/löschen?

Edit: Und noch eine kleine Sache: Bei Ausführung wird "FINDSTR: Fehler beim Schreiben" angezeigt, und in der letzten Zeile der Ausgabedatei erscheint nur das "/" ;)


Vielen Dank aber schonmal!!
Bitte warten ..
Mitglied: bastla
13.10.2007 um 17:09 Uhr
Hallo teklan!

Ändere die "findstr"-Schreibweise auf
01.
findstr "\.rst \.pop" "%Ein%"
Bei Ausführung wird "FINDSTR: Fehler beim Schreiben" angezeigt, und in der letzten Zeile der Ausgabedatei erscheint nur das "/" ;)
Mit den aus Deinem ersten Posting entnommenen Testdaten erhalte ich keine derartige Fehlermeldung.

Du könntest das "@echo off" auf "@echo on" ändern und den Batch so aufrufen:
01.
Batchname > D:\Log.txt
In der damit erstellten "D:\Log.txt" könntest Du dann versuchen, dem Fehler auf die Spur zu kommen. Wenn Du
01.
Batchname > D:\Log.txt 2>&1
schreibst, werden auch die Fehlermeldungen in der Log-Datei protokolliert.

Grüße
bastla
Bitte warten ..
Mitglied: bastla
13.10.2007 um 17:21 Uhr
... Nachtrag: Damit das Filtern mehrfach vorhandener Einträge sicherer wird, sollte eine temporäre Liste erstellt werden. Dann ergibt sich folgender Batch:
01.
@echo off & setlocal 
02.
set "Ein=D:\Ein.txt" 
03.
set "Aus=D:\Aus.txt" 
04.
 
05.
set "T=%Temp%\Unsortiert.txt" 
06.
if exist "%T%" del "%T%" 
07.
for /f "tokens=2" %%i in ('findstr "\.rst \.pop" "%Ein%"') do (echo %%~i)>>"%T%" 
08.
 
09.
set Zuletzt=- 
10.
if exist "%Aus%" del "%Aus%" 
11.
for /f "delims=" %%i in ('sort "%T%"') do call :ProcessLink "%%~i" 
12.
del "%T%" 
13.
goto :eof 
14.
 
15.
:ProcessLink 
16.
if %1==%Zuletzt% goto :eof 
17.
set Zuletzt="%~1" 
18.
(echo /%~1)>>"%Aus%"
Grüße
bastla

[Edit] Korrektur: In der letzten Zeile muss die Ausgabe nach "%Aus%" erfolgen. Außerdem ist "%Aus%" vorweg zu löschen. [/Edit]
Bitte warten ..
Mitglied: bastla
13.10.2007 um 17:29 Uhr
... Nachtrag zum Nachtrag: Ich habe noch notwendige Korrekturen vorgenommen.

Grüße
bastla
Bitte warten ..
Mitglied: teklan
13.10.2007, aktualisiert 18.10.2012
hey danke,

das findstr "\.str \.pop" klappt super, und das hat auch den Fehler behoben...die batch ist bestimmt
irgendwie durcheinandergekommen, da in der ausgangsdatei auch viele kryptsiche Zeichen waren.
Nunja auf jeden Fall klappt jetzt alles prima! Vielen Dank nochmal!

...jetzt möchte ich diese batch nurnoch ein bisschen erweitern...aber das schreibe ich ihn neuem Tread, da es anderes "Thema" ist, und für andere Leute dadurch denk ich leichter gefunden wird!

Link zu dem neuen Thema: http://www.administrator.de/forum/eine-datei-in-meine-batch-datei-ziehe ...

Gruss
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Bestimmte Zeile aus mehreren Dateien in eine neue Datei schreiben
gelöst Frage von Oggy76Batch & Shell5 Kommentare

Hallo zusammen, meine Kenntnisse in Sachen batch/shell sind ehr auf Anfängerniveau zu sehen. Grund -basics im CMD-Prompt sind vorhanden, ...

Batch & Shell
Mittels Batch bestimmte Information aus unbekannter Textdatei auslesen und in XML-Datei schreiben
gelöst Frage von tardezyxBatch & Shell3 Kommentare

Hallo, es sind innerhalb eines Verzeichnisses sehr viele Unterordner vorhanden, in denen sich jeweils eine Textdatei befindet, deren Strukturen ...

Batch & Shell
Ab einen bestimmten Suchbegriff alles in eine neue Datei schreiben mittels Dos Batch
Frage von tommhiiBatch & Shell4 Kommentare

Hallo ich habe folgendes vor ich habe ein große Txt Datei da möchte ich nur die Abschluß Statistik auslesen ...

Windows Systemdateien
Registry-Schlüssel per Batch auslesen und in Datei schreiben
gelöst Frage von PhilzipWindows Systemdateien9 Kommentare

Hallo zusammen, ich habe mir vorhin einen Befehl gebastelt, der die Installierte Version von NET Framework auslesen und in ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 7 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 8 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1011 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell22 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen18 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
gelöst Frage von Z3R0C0MM4N0THiN6Windows Server10 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...