Batchdatei soll in Dateien txt und xml nach einem Text suchen
Hallo zusammen
Ich bin neu hier und wäre froh um Hilfe von Euch. Ich kenne mich nicht sonderlich gut aus mit Batchdateien und benötige Hilfe für eine Erweiterung.
Folgendes:
Auf einem Laufwerk liegen ca. 30 Dateien, teils txt und teils xml. Ich möchte mit einer Batchdatei herausfinden, in welchen Dateien ein bestimmtes Wort vorkommt und diese Dateinamen in eine Protokolldatei schrieben.
Mit folgendem Code funktioniert das auch sauber, wenn ich z.B. die Suche nach "Beppi" in allen txt Dateien ausführe.
@echo off & setlocal
set "SrcDir=D:\Spezialtools"
set "FileType1=txt"
set "FileType2=xml"
set "SearchKey=Beppi"
set "LogFile=Protokoll.txt"
(for %%f in ("%SrcDir%\*.%FileType1%") do (
type "%%~f" | findstr /M /C:"%SearchKey%" > NUL && (
echo %%~f
)
)) > "%LogFile%"
Ich weiss nicht, wie ich den Code schreiben muss, dass er alle Dateien, also txt und xml, durchsucht. Also z.B. zuerst alle txt Dateien durchsucht, danach die xmls, und das Resultat dann in eine einzige Protokolldatei schreibt. Ich habe schon 2 Stunden probiert und versucht, aber komm auf keinen grünen Zweig.
Wenn das funktioniert, möchte ich im Nachgang mit einer Eingabemöglichkeit dem Nutzer erlauben, das gesucht Wort selber einzugeben. Aber das krieg ich vielleicht selber hin.
Vielen Dank für Eure Hilfe.
Viele Grüsse
Silence
Ich bin neu hier und wäre froh um Hilfe von Euch. Ich kenne mich nicht sonderlich gut aus mit Batchdateien und benötige Hilfe für eine Erweiterung.
Folgendes:
Auf einem Laufwerk liegen ca. 30 Dateien, teils txt und teils xml. Ich möchte mit einer Batchdatei herausfinden, in welchen Dateien ein bestimmtes Wort vorkommt und diese Dateinamen in eine Protokolldatei schrieben.
Mit folgendem Code funktioniert das auch sauber, wenn ich z.B. die Suche nach "Beppi" in allen txt Dateien ausführe.
@echo off & setlocal
set "SrcDir=D:\Spezialtools"
set "FileType1=txt"
set "FileType2=xml"
set "SearchKey=Beppi"
set "LogFile=Protokoll.txt"
(for %%f in ("%SrcDir%\*.%FileType1%") do (
type "%%~f" | findstr /M /C:"%SearchKey%" > NUL && (
echo %%~f
)
)) > "%LogFile%"
Ich weiss nicht, wie ich den Code schreiben muss, dass er alle Dateien, also txt und xml, durchsucht. Also z.B. zuerst alle txt Dateien durchsucht, danach die xmls, und das Resultat dann in eine einzige Protokolldatei schreibt. Ich habe schon 2 Stunden probiert und versucht, aber komm auf keinen grünen Zweig.
Wenn das funktioniert, möchte ich im Nachgang mit einer Eingabemöglichkeit dem Nutzer erlauben, das gesucht Wort selber einzugeben. Aber das krieg ich vielleicht selber hin.
Vielen Dank für Eure Hilfe.
Viele Grüsse
Silence
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4962436112
Url: https://administrator.de/contentid/4962436112
Ausgedruckt am: 22.11.2024 um 02:11 Uhr
6 Kommentare
Neuester Kommentar
Hi
1.) Machs nicht so kompliziert
2.)
Batch ist tot. Schon sehr lange. Lass es in Frieden ruhen und lerne Powershell
1.) Machs nicht so kompliziert
@echo off & setlocal
set "SrcDir=D:\Spezialtools"
set "FileType1=*.txt"
set "FileType2=*.xml"
set "SearchKey=Beppi"
set "LogFile=Protokoll.txt"
cd %SrcDir%
findstr /M /C:"%SearchKey%" %FileType1% %FileType2% > %LogFile%
2.)
Batch ist tot. Schon sehr lange. Lass es in Frieden ruhen und lerne Powershell
$SrcDir="D:\Spezialtools"
$searchextensions = @("*.xml","*.txt")
$SearchKey="Beppi"
$LogFile="Protokoll.txt"
Get-ChildItem -Path $SrcDir -Include $searchextensions -Recurse | Select-String $SearchKey | select Path | Out-File -FilePath $LogFile
Frage an die anderen erlauben wir hier "AI" antworten?
Das funktioniert bei mir so. Hab es extra getestet
Um die Batchdatei auszuführen, müssen Sie sie in einem Ordner mit den zu durchsuchenden Dateien speichern und dann über die Eingabeaufforderung (cmd.exe) aufrufen. Wenn Sie die Batchdatei beispielsweise search.bat nennen, können Sie sie wie folgt aufrufen:
Die Batchdatei sucht dann in allen .txt- und .xml-Dateien im aktuellen Verzeichnis nach dem angegebenen Wort und schreibt die Namen der Dateien, in denen das Wort gefunden wurde, in die Protokolldatei log.txt.
Das funktioniert bei mir so. Hab es extra getestet
@echo off
rem This batch file searches for a given word in all .txt and .xml files in the current directory
rem and writes the names of the files containing the word to a log file.
rem Set the search word and the log file path
set searchWord=your_search_word
set logFile=c:\temp\log.txt
set SrcDir=C:\tmp
rem Delete the log file if it already exists
if exist %logFile% del %logFile%
setlocal enabledelayedexpansion
rem Search for the word in all .txt and .xml files
cd %SrcDir%
for /R . %%f in (*.txt, *.xml) do (
findstr /M /C:%searchWord% "%%f"
if !errorlevel!==0 (
rem Write the name of the file containing the word to the log file
echo %%f >> %logFile%
)
)
Um die Batchdatei auszuführen, müssen Sie sie in einem Ordner mit den zu durchsuchenden Dateien speichern und dann über die Eingabeaufforderung (cmd.exe) aufrufen. Wenn Sie die Batchdatei beispielsweise search.bat nennen, können Sie sie wie folgt aufrufen:
cd path/to/folder
search.bat