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

Begriff in Dateiliste mit Texten suchen und Dateiname mit Zeile ausgeben ohne Anzeige der Dateien ohne dem Suchbegriff

Frage Entwicklung Batch & Shell

Mitglied: ET0815

ET0815 (Level 1) - Jetzt verbinden

11.01.2012 um 22:49 Uhr, 3794 Aufrufe, 12 Kommentare

Hallo! Ich möchte aus einem Ordner mit mehreren hundert Textdateien, welche ein Programm ständig anlegt, Begriffe suchen. Dabei benötige ich den/die Dateinamen in der sich der Suchbegriff befindet mit Ausgabe der kopletten Zeile.

Zum Suchen der Begriffe in den Textdateien, verwende ich bis jetzt den FIND-Befehl. Denn ich benötige den Dateinamen und die Zeile mit den entsprechendem Begriff. Bei der Suche mit FIND, werden mir dann die Dateinamen und die Zeilen mit dem Suchbegriff mit ausgegeben. Nur dabei werden auch die weit über hundert anderen Textdateien, welche den Begriff nicht mit behinhalten mit aufgelistet. Nun meine Frage, wie kann ich das Auflisten der Dateien, welche den Begriff nicht beinhalten unterbinden?
Mitglied: bastla
11.01.2012 um 23:01 Uhr
Hallo ET0815 und willkommen im Forum!

Verwende anstelle von "find" einfach "findstr" ...

Grüße
bastla
Bitte warten ..
Mitglied: ET0815
13.01.2012 um 22:18 Uhr
Oh danke. Hatte das schonmal probiert aber immer die falschen Schalter gesetzt, aber nun funktionierts. Besteht eigentlich auch die Möglichkeit, mehrere Suchbegriffe die in einer Zeile stehen sollen zu suchen? Es sollen quasi zwei oder noch mehr Kriterien zu treffen.
Bitte warten ..
Mitglied: bastla
13.01.2012 um 22:30 Uhr
HalloET0815!
Es sollen quasi zwei oder noch mehr Kriterien zu treffen.
Versuch es so:
findstr "Kriterium1" *.txt|findstr "Kriterium2"|findstr "Kriterium3"
Grüße
bastla
Bitte warten ..
Mitglied: ET0815
14.01.2012 um 01:12 Uhr
Danke, läuft super! Jetzt hab ich nur noch das Problem, das Begriffe mit Umlauten nicht gefunden werden. Wie mach ich das nur wieder? Sorry, ich weiß ich nerver mit meinen für euere Verhältnissen einfach Sachen.
Bitte warten ..
Mitglied: bastla
14.01.2012 um 11:39 Uhr
Hallo ET0815!

Versuch es mit dem Umweg über eine "Kriteriendatei": Erstelle dazu zB die Datei "D:\Kriterium1.txt" mit dem Suchkriterium (bzw für eine "Oder"-Verknüpfung auch mehrere Kriterien in jeweils eigenen Zeilen) als Inhalt und verwende sie dann so:
findstr /g:"D:\Kriterium1.txt" *.txt
Grüße
bastla
Bitte warten ..
Mitglied: ET0815
15.01.2012 um 23:34 Uhr
Danke bastal, funkioniert ebenfalls super! Einmal bräuchte ich deine Hilfe nochmal. Kann man irgendwie das Erstellungsdatum der entsprechenden Dateien mit in der Zeil mit dem gefundenem Begriff ausgeben? Aufgrund der hohen Datenmenge, bräuchte ich dies, zwecks der Übersichtlichkeit. Danke schonmal im vorraus.

Gruß
Toni
Bitte warten ..
Mitglied: bastla
16.01.2012 um 12:15 Uhr
Hallo ET0815!

Änderungsdatum wäre einfacher - ungetestet etwa so:
01.
@echo off & setlocal 
02.
set "Ordner=D:\Ordner mit mehreren hundert Textdateien" 
03.
set "Ausgabe=D:\Ergebnisse.txt" 
04.
 
05.
pushd "%Ordner%" 
06.
del "%Ausgabe%" 2>nul 
07.
08.
    for /f "tokens=1* delims=:" %%i in ('findstr /g:"D:\Kriterium1.txt" *.txt') do echo %%i_%%~ti_%%j 
09.
    for /f "tokens=1* delims=:" %%i in ('findstr /g:"D:\Kriterium2.txt" *.txt') do echo %%i_%%~ti_%%j 
10.
)>>"%Ausgabe%" 
11.
popd
Grüße
bastla

[Edit] auf Ausgabe Datum geändert [/Edit]
Bitte warten ..
Mitglied: ET0815
16.01.2012 um 21:03 Uhr
Danke für deine Mühe bastla, aber das Ergebnis ist leider das Gleiche wie mit dem einfachen FINDSTR-Befehl. Nur das : Zeichen hinter dem Laufwerksbuchstaben wurde bei der Ausgabe mit einem _ Zeichen ausgetauscht.
Weis nicht ob man den DIR-Befehl mit dem FINDSTR-Befehl kombinieren kann. Habe schon experimentiert, aber ohne auswertbaren Erfolg.

Gruß
Toni

PS: Wobei das Änderungsdatum wäre auch ok, da die Dateien zu einem Archiv gehören und nicht mehr geändert werden. Daher ist das Änderungsdatum=Erstellungsdatum.
Bitte warten ..
Mitglied: bastla
16.01.2012 um 21:13 Uhr
Hallo ET0815!

Wie sieht denn Dein verwendeter Batch aus? In meiner Variante hätte (aufgrund des "pushd" vorweg) eigentlich nur der Dateiname ausgegeben werden sollen ...

... anyhow - wenn Du vollständige Pfade erhältst, kannst Du ja diese ja wieder zusammensetzen:
for /f "tokens=1-2* delims=:" %%i in ('findstr /g:"D:\Kriterium1.txt" *.txt') do for %%a in ("%%i:%%j") do echo %%~a_%%~ta_%%k
Grüße
bastla

[Edit] auf Ausgabe Datum geändert [/Edit]
Bitte warten ..
Mitglied: ET0815
16.01.2012 um 21:25 Uhr
Die Batch ist sehr lang, da diese noch mehr macht, außer das Suchen. Weil du meinst, das das Änderungsdatum einfacher geht, wie mache ich dies?

Zur Zeit bin ich so weit:
...
findstr /i /c:"%suche%" %archiv%*.txt >> Suchergebnis_%Suche2%.txt
start Suchergebnis_%Suche2%.txt

Den Teil den du weiter oben geschrieben hast, nehm ich zur Zeit nur in experimentellen Dateien (also die Suche mit mehreren Begriffen). Jendenfalls hab ich deinen vorletzten Script in einer separaten Datei nur mit deinem Inhalt auf meine Ordner zugeschnitten ohne mein ganzes drum herum getestet.

Gruß
Toni
Bitte warten ..
Mitglied: bastla
16.01.2012 um 21:39 Uhr
Hallo ET0815!

Vorweg: Verwende bitte zum Posten von Codeschnipsen die passende Formatierung ...
Weil du meinst, das das Änderungsdatum einfacher geht, wie mache ich dies?
Wenn Du die Datei in der Schleifenvariablen einer "for"-Schleife hast, kannst Du "~t" dafür verwenden (siehe dazu ziemlich am Ende der Ausgabe von "for /?") - im einfachsten Fall (zum Testen in der CMD-Shell, daher nur ein %-Zeichen):
for %i in (*.txt) do @echo %~ti_%i
Da das Ergebnis eines "findstr" für mehrere Dateien dem Schema
Dateiname:den Suchbegriff enthaltende Zeile
entspricht, bietet es sich an, am ersten ":" zu trennen.

Soferne Deine Variable %archiv% eine Pfadangabe enthält, sieht die Ausgabe so aus:
Laufwerk:\Pfad\Dateiname:den Suchbegriff enthaltende Zeile
- es wird hier demnach bei einer Zerlegung anhand des ":" ein Ergebnis in 3 Teilen erzeugt, von dem die ersten beiden (im Beispiel unten %%i und %%j) zusammen den gesamten Dateipfad ergeben (in Teil 3 = %%k steht dann die Textzeile) - daher (jetzt zur Verwendung in einem Batch):
for /f "tokens=1-2* delims=:" %%i in ('findstr /i /c:"%suche%" %archiv%*.txt') do for %%a in ("%%i:%%j") do >>Suchergebnis_%Suche2%.txt echo %%~a_%%~ta_%%k
Grüße
bastla

[Edit] Ich weiß auch nicht, weshalb ich die ganze Zeit anstatt des Datums die Dateigröße ausgeben wollte - ist jetzt (auch oben) korrigiert [/Edit]
Bitte warten ..
Mitglied: ET0815
16.01.2012 um 22:32 Uhr
Ich danke dir wie verrückt, genau so hab ich mir das vorgestellte! Tausend Dank! Hoffe ich darf weiter nerven, wenn ich wieder Sorgen habe.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
gelöst Windows Ordnerstruktur, Pfad und Dateiname in Excel ausgeben (2)

Frage von zlep01 zum Thema VB for Applications ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...