Suchausdruck in Datei schreiben
Hallo,
ich muss über eine Ordner einen Ausdruck in TXT Dateien suchen, wird dieser Ausdruck gefunden, möchte ich gerne eine Liste haben in der steht in welchem Ordner diese Datei bzw der Ausdruck liegt.
"Mein" Überlegung auf Basis eines anderen Posting
mfg an Bastla
@echo off & setlocal
set "Ordner=X:\Daten\"
set "Datei=Daten_info.txt"
set /P suche=Wert eingeben:
for /d %%i in ("%Ordner%*.*") do call :ProcessDir "%%i"
goto :eof
:ProcessDir
if not exist "%~1\%Datei%" goto :eof
set /p Name=<"%~1\%Datei%"
echo %Name%
pause
if %Name%=%suche% then echo %Name%%Ordner% >> %Ordner%Ausgabe.txt
goto :eof
In der Datei Ausgabe.txt sollten dann die Ordner gelistet sein indem der Ausdruck liegt bzw in der txt Datei steht.
gruß
ich muss über eine Ordner einen Ausdruck in TXT Dateien suchen, wird dieser Ausdruck gefunden, möchte ich gerne eine Liste haben in der steht in welchem Ordner diese Datei bzw der Ausdruck liegt.
"Mein" Überlegung auf Basis eines anderen Posting
mfg an Bastla
@echo off & setlocal
set "Ordner=X:\Daten\"
set "Datei=Daten_info.txt"
set /P suche=Wert eingeben:
for /d %%i in ("%Ordner%*.*") do call :ProcessDir "%%i"
goto :eof
:ProcessDir
if not exist "%~1\%Datei%" goto :eof
set /p Name=<"%~1\%Datei%"
echo %Name%
pause
if %Name%=%suche% then echo %Name%%Ordner% >> %Ordner%Ausgabe.txt
goto :eof
In der Datei Ausgabe.txt sollten dann die Ordner gelistet sein indem der Ausdruck liegt bzw in der txt Datei steht.
gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 07.10.2009 um 11:49:30 Uhr
Verschoben von "Tools & Utilities" nach "Batch & Shell".
Content-ID: 126581
Url: https://administrator.de/forum/suchausdruck-in-datei-schreiben-126581.html
Ausgedruckt am: 10.04.2025 um 18:04 Uhr
9 Kommentare
Neuester Kommentar
Moin bodyparts,
drei Rückfragen.
1) warum postest Du diese Frage unter "Tools & Utilities?
2) Verbietet dir deine Religion das Verwenden von Codetags? Soll ich mal koschere besorgen?
3) Wieso fackelst du das Ganze nicht mit einem Oneliner vom CMD-Prompt aus ab?
Grüße
Biber
drei Rückfragen.
1) warum postest Du diese Frage unter "Tools & Utilities?
2) Verbietet dir deine Religion das Verwenden von Codetags? Soll ich mal koschere besorgen?
3) Wieso fackelst du das Ganze nicht mit einem Oneliner vom CMD-Prompt aus ab?
1
@for /d %i in (X:\Daten\*) do @Findstr /i /C:"Dein Suchwert" %i\Datei_info.*>nul && @echo %i
Grüße
Biber
Moin bodyparts,
DONE.
Wenn Du Programmcode, z.B. einen Batchschnipsel mit Zeilennummern und ansonsten so, wie er per Copy&Paste hier ankommt posten willst, dann schreibe vor den Quellcode ein "< code >" und nach der letzten Quellcodezeile ein ">/ code >" jeweils ohne Anführungszeichen und Leerzeichen.
Bitte öffne dir ein CMD-Fenster ("Start"->"Ausführen"->cmd [ENTER].
Später, wenn es funktioniert, kannst du es als batchdatei speichern und dazu alle einfachen %-zeichen (%i, %j...) in doppelte %-Zeichen ändern (%%i, %%j..).
Später!
jetzt neu.
<code type>@for /d %i in (C:\Daten\*) do @findstr /i /C:"HAUS C" %i\Daten_info.txt>nul && @echo %i
Grüße
Biber
DONE.
zu 2. ich glaube nicht, gerne darfst du mir die Codetags erklären bzw eine Link senden
Wenn du einen Beitrag/einen Kommentar schreibst, dann siehst du oberhalb des texteingabefensters einen Link namens "Formatierungshilfe". Wenn du dort klickst, geht ein zusätzliches Popup-Fensterchen auf, in dem u.a. die beschrieben wird.Wenn Du Programmcode, z.B. einen Batchschnipsel mit Zeilennummern und ansonsten so, wie er per Copy&Paste hier ankommt posten willst, dann schreibe vor den Quellcode ein "< code >" und nach der letzten Quellcodezeile ein ">/ code >" jeweils ohne Anführungszeichen und Leerzeichen.
zu 3. würde ich gerne, evtl denke ich zu umständlich
Jein... ich würde eher sagen, wenn du von "übernommenem" Sourcecode ausgehst und den versuchst so hinzubiegen, dass er bei dir passt, dann besteht immer die Gefahr, das es viel umwegiger wird, als wenn du den direkten Weg gehst (=" deine eigene Lösungsstrategie entwickelst")beim testen blickt die batch einmal kurz.... selbst eine Pause stop diese nicht....
Weil es keine Batch-Datei ist, sondern nur eine Zeile, die du direkt vom CMD-Prompt abfeuern solltest.Bitte öffne dir ein CMD-Fenster ("Start"->"Ausführen"->cmd [ENTER].
Später, wenn es funktioniert, kannst du es als batchdatei speichern und dazu alle einfachen %-zeichen (%i, %j...) in doppelte %-Zeichen ändern (%%i, %%j..).
Später!
werden Unterordner berüchsichtigt?
Ja, aber nur (wie in bastlas Vorlage) EINE Ebene unterhalb des Startverzeichnisses C:\Daten.Es brauchen nur *.txt Dateien durchsucht werden.
Okay, das war Tipp-Faulheit von mir, dann statt1
@for /d %i in (C:\Daten\*) do @Findstr /i /C:"HAUS C" %i\Daten_info.*>nul && @echo %i
jetzt neu.
<code type>@for /d %i in (C:\Daten\*) do @findstr /i /C:"HAUS C" %i\Daten_info.txt>nul && @echo %i
Grüße
Biber
Moin bodyparts,
zu deiner ersten Frage (warum %i am CMD-Prompt und %%i im Batchfile):
Die CMD.exe, die "Windows-Shell" kann
Im beiden Modi sind jeweils einige Befehle des gesamten Befehlssatzes wirkungslos (z.B goto am CMD-Prompt); ein weiterer Unterschied ist die Schreibweise der dynamischen Variablen (== fie Laufvariablen der FOR-Anweisungen). Nimm es einfach als gatesgegeben hin.
Zweite Frage, Ordner ignorieren, die keine Datei dieses Namens enthalten
Grüße
Biber
zu deiner ersten Frage (warum %i am CMD-Prompt und %%i im Batchfile):
Die CMD.exe, die "Windows-Shell" kann
- entweder interaktiv von der so genannten "Eingabeaufforderung" genutzt werden, jeweils eine Befehlszeile gefolgt von ENTER, dann die Ausführung
- oder im Batchmodus, mehrere Befehlszeilen nacheinander ohne Benutzerinteraktion.
Im beiden Modi sind jeweils einige Befehle des gesamten Befehlssatzes wirkungslos (z.B goto am CMD-Prompt); ein weiterer Unterschied ist die Schreibweise der dynamischen Variablen (== fie Laufvariablen der FOR-Anweisungen). Nimm es einfach als gatesgegeben hin.
Zweite Frage, Ordner ignorieren, die keine Datei dieses Namens enthalten
1
@for /d %i in (C:\Daten\*) do @Findstr /i /C:"HAUS C" %i\Daten_info.txt>nul 2>nul && @echo %i
Grüße
Biber
Moin bodyparts,
der Teil nach dem "&&" (==wenn was gefunden) ist noch nicht ganz richtig.
Die normale Syntax einer Echo-Umleitung ist:
Das Ziel (c:\datan\%suche%.txt) habe ich in Anführungszeiechen gesetzt, fall der Suchstring aus mehreren Teilen besteht/ein leerzeichen einschliesst.
Grüße
Biber
der Teil nach dem "&&" (==wenn was gefunden) ist noch nicht ganz richtig.
Die normale Syntax einer Echo-Umleitung ist:
ECHO text-zum-umleiten [>|>>] zieldatei
..also in Deinem Fall... Echo %%i>>"c:\daten\%suche%.txt"
Das Ziel (c:\datan\%suche%.txt) habe ich in Anführungszeiechen gesetzt, fall der Suchstring aus mehreren Teilen besteht/ein leerzeichen einschliesst.
Grüße
Biber