Batch Nach Find eine If-Abfrage, dann copy

Trava

Ensign
Registriert
Nov. 2008
Beiträge
128
Servus,

will etwa 1000-2000 Log Dateien auf eine Fehlermeldung überprüfen (über einen Textstring) und danach, wenn der String gefunden wurde, die Datei in dem der String enthalten ist in einen eigenen Ordner kopieren.

Hat jemand nen Vorschlag wie man das realisieren könnte? Am besten mit nem Grundgerüst an Quellcode. Bin schon den ganzen morgen drann und bekomm nix gescheites hin :freak:
 
Hi,
also ich hab folgenden gefunden http://www.administrator.de/index.php?content=141649
Das ist ja ein ähnliches Problem.

Code:
for /f "delims=" %A in ('Findstr /i /M /C:"was auch immer" *.txt') Do @Echo Del "%A"

Nur muss das Del "%A" durch deinen Kopierbefehl ersetzt werden.
Da er sonst die Datein löscht.

So in etwa
Code:
for /f "delims=" %A in ('Findstr /i /M /C:"was auch immer" *.txt') Do @Echo xcopy "%A" "c:/ordner/%A"


Aber alles ohne Gewähr, ich kenn mich da nicht aus ;)
 
Das echo muss noch weg. So führt er den Befehl ja nicht aus, sondern zeigt ihn nur an.

Dann passts.




Übrigens wenn dies nur ne einmalige Aufgabe ist, dann nutz einfach die Windows suche.

Alle Dateien des Typs *.log anzeigen, die die gesuchte Reihenfolge beinhalten. Die Ergebnisliste kannst du dann markieren, kopieren und an deinem neuen Ort einfügen.
 
Hi,

hier noch als Autoit-Skript:

Code:
#Include <File.au3>
#include <Array.au3>
$Pathinput = "D:\zudurchsuchenderordner\"
$Pathoutput = "D:\ausgabeordner\"
$Files = _FileListToArray($Pathinput,"*",1)
$FindText = "suchtext"

for $i = 1 to $Files[0]
$FileContents = FileRead($Pathinput & $Files[$i])
$FileContents = StringInStr ($FileContents,$FindText)
if $FileContents <> 0 Then FileCopy($Pathinput & $Files[$i], $Pathoutput & $Files[$i])
Next

Gruß
 
Zurück
Oben