leitz
Goto Top

batch programm um Namen in der Datei zu suchen

Hallo Zusammen!!


Ich will eine batch datei schreiben,die soll in den Textdokumenten(Die Textdokumente sind alle in einem Ordner) nach bestimmten Namen suchen. Die Textdokumente, die den Namen enthalten, sollen entweder woanders hin kopiert oder markiert werden oder irgendwie auffallen.

LG Sarah

Content-Key: 50236

Url: https://administrator.de/contentid/50236

Printed on: May 11, 2024 at 04:05 o'clock

Member: Tundra
Tundra Jan 30, 2007 at 14:31:31 (UTC)
Goto Top
Hi Sarah,

was ist Deine Frage, da Du noch nicht eine Zeile Code geschrieben/gepostet hast.

Daher auch nur eine allg. Antwort.

Durchsuche mit for each das Verzeichnis nach Dateien, öffne jede Datei, durchsuche sie mit dem Suchbegriff und führe dann eine Operation aus.

Grüße
Guido
Member: AxelHahn
AxelHahn Jan 30, 2007 at 17:09:06 (UTC)
Goto Top
Hi Sarah,

schaue dir die Hilfe von findstr an. Damit kannst du
- rekursiv in Dateien nach textinhalt suchen
- normale und reguläre Suchausdrücke verwenden (oder eine Liste mit Suchbegriffen als Liste angeben)

Poste deinen Code und sage, wo du nicht weiterweist.


Viele Grüsse
-= Axel =-
Member: leitz
leitz Jan 30, 2007 at 21:32:43 (UTC)
Goto Top
Hallo nochmals,

Erstmal danke für eure Hilfe Guido und Axel. Ich habe diesen Abend lange herum gebastelt und versucht mit eurer Hilfe, was auf die Beine zu stellen.Leider ohne richtigen Erfolg.


Was ich irgendwie geschafft habe, ist dieser nicht funktionsfähige Befehl.Wollte mal von euch hören was ihr davon hält oder ob es überhaupt so funktionieren kann.


FOR %%i in (Pfad des Orders indem gesucht werden soll) do findstr \M "name des zu suchenden strings" [Laufwerk:][Pfad](Pfad des Ordnes indem gesucht werden soll)


Dazu habe ich diesen Befehl im internet gefunden.Ich denke dieser Befehl kann mir helfen in einem bestimmten Ordner in die Datein hineinzusehen.Bin mir jedoch nicht sicher.

dir /a:-d | findstr “^05.04.2001”
zeigt alle Dateien im aktuellen Verzeichnis mit dem Datum 05.04.2001 an

nochmals Danke

LG Sarah
Member: Dani
Dani Jan 30, 2007 at 22:34:51 (UTC)
Goto Top
Hi,
also du möchtest innhalb der einzelenen Dokumenten suchen?! Ja - Dann benutz mal diesen Batch:
@ECHO off

SET dir_src=C:\test\123
SET dir_des=C:\rrr
SET string=

FOR /f %%a IN ('DIR /b /s "%dir_src%"') DO (  
	FOR /f %%b IN('TYPE "%dir_src%\%%a" ^|FINSTR /i /m "%string%"') DO (  
		COPY "%dir_src%\%%b" "%dir_des%" /y  
	)
)
Bei der Pfadangabe am Ende den "\" weglassen!! Ansonsten die Pfadanpassen.

dir_src: Dort liegen deine txt-Dateien
dir_des: Dort wird die entsprechende Datei hinkopiert, wenn die Zeichenfolge xxx vorhanden ist
string: Suchbegriff

Leider bin ich nicht zum testen gekommen!


Gruß
Dani
Member: leitz
leitz Jan 31, 2007 at 10:44:51 (UTC)
Goto Top
HI Dani,
Danke für deine Hilfe.Ich habe den ganzen Morgen versucht, den batch laufen zu bringen.ohne erfolg.ich schreibe mal auf, was ich versucht habe(sieht aber genau so aus wie dein skript).

@echo off

if ERRORLEVEL goto Fehler

SET dir_src=C:\Dokumente und Einstellungen\test\Desktop\Neuer Ordner
ECHO %dir_src%
pause
SET dir_des=C:\Dokumente und Einstellungen\test\Desktop\Neuer Ordner\kopierte Datein
ECHO %dir_des%
pause
SET string= test
ECHO %string%
pause

FOR /f %%a IN ('DIR /b /s "%dir_src%"')
DO (
FOR /f %%b IN ('TYPE "%dir_src%\%%a" ^| FINDSTR /i /m "%string%"') DO
(COPY "%dir_src%\%%b" "%dir_des%" /y)
)

:Fehler
echo Fehler aufgetreter

:P1
echo OK

LG Sarah
Member: Dani
Dani Jan 31, 2007 at 12:31:31 (UTC)
Goto Top
Hi Sarah,
also ich habe es grad probiert und die Fehler beseitigt. Kl. Denkfehler waren drinne!

So sieht die Finalversion aus:
@ECHO off

SET dir_src=
SET dir_des=
SET string=

FOR /f "delims=" %%a IN ('DIR /b /s "%dir_src%"') DO (  
	FOR /f %%b IN ('TYPE "%%a" ^|FINDSTR /i "%string%"') DO (  
		COPY "%%a" "%dir_des%" /y  
	)
)
pause
Viel Spaß....


Gruß
Dani
Member: bastla
bastla Jan 31, 2007 at 13:02:30 (UTC)
Goto Top
Hallo Sarah!


Und von mir noch eine etwas gestraffte Variante:
@echo off & setlocal
set "dir_src=C:\Dokumente und Einstellungen\test\Desktop\Neuer Ordner"  
set typ_src=*.txt
set "dir_des=C:\Dokumente und Einstellungen\test\Desktop\Neuer Ordner\kopierte Datein"  
set "string=test"  
for /f "delims=" %%i in ('findstr /i /m "%string%" "%dir_src%\%typ_src%"') do copy /y "%%i" "%dir_des%" || echo Fehler aufgetreten!  
echo OK
Anmerkungen:

IF ERRORLEVEL ist kein unmittelbares Pendant zu "On Error ...", sondern müsste nach jeder "zu überwachenden" Anweisung etwa so verwendet werden (siehe auch "if /?"):
copy ...
if errorlevel 1 goto :Fehler
Bei den "set"-Anweisungen habe ich zur Sicherheit Biber's Spezialsyntax verwendet (die Anführungszeichen stellen sicher, dass alle benötigten Leerstellen in die Variable übernommen werden - beim der von mir ergänzten Variable für den Dateityp sollte es keine geben). Bei Deinem "SET string= test" oben hattest Du übrigens ein (vermutlich ungeplantes) Leerzeichen vor "test".
"delims=" sorgt dafür, dass die Pfade der gefundenen Dateien vollständig in %%i gespeichert werden (einmal mehr die Leerstellen-Problematik).
"findstr /m" listet die Dateien, in denen der Suchtext enthalten ist, samt Pfadangabe auf, daher kann das Ergebnis (als %%i) gleich als Quelle für das Kopieren verwendet werden.

Grüße
bastla

[Edit] @Dani - Sorry, hatte nicht nochmal reingeschaut ... [/Edit]
Member: leitz
leitz Jan 31, 2007 at 14:59:25 (UTC)
Goto Top
Vielen Vielen Dank Jungs, hat alles wunderbar geklappt.

LG Sarah
Member: Dani
Dani Jan 31, 2007 at 16:37:44 (UTC)
Goto Top
Hi Sarah,
wunderbar...das freut uns zuhören! *gg*

Bitte den Thread als "gelöst" markieren. Dazu oben bei der Problembeschreibung auf editieren klicken und den entsprechenden Hacken setzen. Danke...


Gruß
Dani