marwin
Goto Top

find und move kombieren

Hallo,

ich möchte mit dem find- oder findstr-befehl und move-befehl kombinieren und dabei Dateien des gleichen Typs in einen anderen Ordner verschieben.
Mit find will ich die Dateien nach einer Zeichenfolge durchsuchen und die gefunden Dateien mit einem move befehl verschieben.
Wie stelle ich das an, die befehle einzeln sind kein Problem nur beide zusammen bekomme ich nicht hin.
Einfache Batchdateien sind kein Thema, nur von for, if usw. hab ich keine Ahnung.

Vielen Dank

Content-Key: 33887

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

Printed on: April 26, 2024 at 18:04 o'clock

Mitglied: 11078
11078 Jun 08, 2006 at 20:21:57 (UTC)
Goto Top
[EDIT]
UUUpsss! Sorry, habe nachträglich gemerkt, dass es um Windows geht. Na ja, da kannst Du trotzdem auch mit | arbeiten. ----
[/EDIT]

Hallo,

ist jetzt nur am Reißbrett überlegt:

Befehle verbindest Du mit dem Zeichen: | Der Output des einen Befehls wird dann an den nächsten weiter gegeben. Etwa so:

find -iname *\.php | less

"find" sucht alle Dateien mit der Endung php und less sorgt dafür, dass nicht einfach tausende am Bildschirm an mir vorbei rutschen sondern ich durch die Ergebnisse scrollen kann...

Das ist das eine. Allerdings weiß ich nicht - und kann es gerade auch nicht testen - ob es sich so einfach mit einem move Befehl verbinden lässt, denn: Im beispiel werden an less ja nicht die einzelnen gefundenen Dateinamen als string übergeben sondern die ganze Liste auf einmal...

Lies Dich mal in "Pipes" ein:
http://de.wikipedia.org/wiki/UNIX_pipes#Unix
http://www.bellevuelinux.org/pipes.html


Vielleicht hat noch jemand eine Idee.


Gruß,
Tim
Member: marwin
marwin Jun 08, 2006 at 21:45:02 (UTC)
Goto Top
hallo

erstmal danke für die schnelle Antwort
ja ich arbeite mit Windows, deshalb muss ich mich erstmal entschuldigen face-smile

also mit .... find /I "@@" c:\neu\*.txt .... kann ich mir anzeigen lassen in welcher datei @@ vorkommt, also nicht im dateinamen sondern im text selbst
und mit ... >>log.txt ... auch in eine logdatei schreiben lassen ...

die sieht dann zb. so aus:

C:\NEU\SCHEDLGU.TXT

C:\NEU\SEGMENT1.TXT
@@

C:\NEU\SEGMENT2.TXT

C:\NEU\SEGMENT3.TXT
@@

C:\NEU\SEGMENT4.TXT

C:\NEU\SEGMENT5.TXT


jetzt stehen da natürliche alle dateien drin die durchsucht werden, hilft nicht viel
mit | less bekomme ich fehler: befehl falsch geschrieben oder konnte nicht gefunden werden

dachte man könne das in einer for-schleife einbauen .....
zb. mit:

@echo OFF
@for /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set SICDATE=%%d-%%c-%%b
@for /R %%e in (.) do copy %%e\*.txt c:\neu

kann ich mir alle txt-dateien mit akuellem datum in einen ordner kopieren lassen, oder hab ich da einen denkfehler. kann auch gut sein dass es mit einer batch nicht funktioniert und man muss es mit vbs,java oder php realisieren
Member: Biber
Biber Jun 09, 2006 at 07:44:49 (UTC)
Goto Top
Moin marwin,

ganz klar ist mir noch nicht, nach welchem Kriterium Du nun verschieben willst... nach aktuellem Datum oder enthaltenem Suchtext...

Nehmen wir erstmal den Suchtext:
Wenn ich alle *.txt-Dateien im aktuellen Verzeichnis nach dem String "Biber" durchsuchen will und diejenigen nach "c:\temp\biberfound" verschieben, die den String enthalten, dann:
for /f %i in ('dir /b *.txt') do @type %i|find /i "Biber">nul && Echo Move %i c:\temp\biberfound\%i  

[würde führen zu...]
Move Temp-Dokument.txt c:\temp\biberfound\Temp-Dokument.txt
-oder noch einfacher-
for %i in (*.txt) do @type %i|find /i "Biber">nul && Echo Move %i c:\temp\biberfound\%i  

Das "Echo" ist natürlich nur zur Simulation und muss zum Scharf-Machen gelöscht werden.

Falls ich Dich falsch verstanden habe, formulier bitte Deine Anforderung nochmal um.

Gruß
Biber
Member: marwin
marwin Jun 09, 2006 at 11:31:45 (UTC)
Goto Top
tach Biber

nee hast mich richtig verstanden, möchte nach Zeichenfogen in Dokumenten suchen, dass mit dem Datum war nur ein Beispiel.
Werde es mal testen und gebe Info wenn es funktioniert bzw ob ich es hin bekomme. face-smile

Danke und Gruß
Marwin


edit

habe gestestet, bekomme Fehler .... "do" ist syntaktisch an dieser Stelle nicht verarbeitbar usw.
ist für mich doch ein schwieriger als ich gedacht hab .....

edit