hilfesuchend
Goto Top

Text in Dateien finden u. dann verschieben

Hallo,

ich hoffe wirklich das ich nicht zu aufgeregt war den richtigen Beitrag zu meinem Problem zu finden, aber ich hab nun schon mehrere Tage damit verbracht u. mir sitzt jetzt die Zeit im Naken.

Ich möchte Dateien von einem zum anderen Server verschieben. Um das nach dem Änderungsdatum zu machen, hab ich schon aufgegeben. Jetzt will ich das nur noch mit find u. move machen. D. h. in den Dateien gibt es eine Kopfzeile in der das Datum nochmal ab dem 8 Zeichen wiederholt wird.

Bsp.: 121311120070101071800406723.0

Jetzt suche ich nachdem Jahr u. dem Monat. Da ich immer nur die verschieben will die älter als 30 Tage bzw. vom letzten Monat sind.
Das sieht dann so aus: find /C "200701" G:\Desktop\Test\*.*

In meinem Testordner funktioniert das auch ich bekomme dann die Dateien angezeigt mit der Anzahl wie oft enthalten die ich auch will. So und jetzt zu meinem Problem. Ich bin wahrscheinlich zu dumm dazu hier jetzt einfach einen Move befehl mit rein zu kriegen. Ich hab es auch schon über For probiert aber auch daran scheitere ich immer wieder. Sicherlich ist das ein ganz minimaler Aufwand aber ich als Anfänger bin schon ziemlich daran verzweifelt und wäre Euch wirklich für Eure Hilfe dankbar.

Content-Key: 52377

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

Printed on: April 20, 2024 at 04:04 o'clock

Member: bastla
bastla Feb 22, 2007 at 15:12:40 (UTC)
Goto Top
Hallo hilfesuchend und willkommen im Forum!

Versuch es vielleicht einmal so:
for /f "delims=" %%i in ('findstr /m "200701" G:\Desktop\Test\*.*') do move "%%i" X:\Zielverzeichnis  
Die Schreibweise mit %%i ist für Batch gedacht, zum Testen von der Kommandozeile nur %i verwenden.

HTH
bastla
Member: Biber
Biber Feb 22, 2007 at 15:22:44 (UTC)
Goto Top
Moin hilfesuchend,

willkommen im Forum.

Um das nach dem Änderungsdatum zu machen, hab ich schon aufgegeben.
Dann lass uns diese Strategie wieder aufwärmen, bevor wir so eine Krücke über ein Find in Zeile 1 ab Position irgendwas nehmen.

Wenn das letzte Änderungsdatum in Deinem Fall aussagefähig ist, dann wäre das ein Fall für VBS, FileSystemObject.DateLastModified und bastla. face-wink

Aber ich glaube mich daran erinnern zu können, dass im Bereich "VB, VBA und ähnliches" schon mal exakt diese Anforderung beantwortet wurde.

Ansonsten poste bitte nochmal, ob ich das richtig verstanden habe, dass das Änderungsdatum als Kriterium valide ist... zur Not geht es auch per Batch oder ich brate schnell so einen VBS-Schnipsel zusammen.

Gruss
Biber
Member: hilfesuchend
hilfesuchend Feb 22, 2007 at 16:03:59 (UTC)
Goto Top
Hallo Ihr Lieben,

ich kann Euch garnicht sagen wie dankbar ich für Eure schnelle Hilfe bin. Das klappt wie am Schnürrchen. Endlich kann ich mich anderen angehäuften Arbeiten widmen.

Das mit dem VBA Skript ist wirklich nett. Nur leider hab ich an der Stelle nur die Batch Möglichkeit.

Ich werde das Ding dann morgen mal zu produktiven Tests nutzen u. mich dann auf jeden Fall nochmal melden, sollte ich doch noch mal in die Not geraten die Abfrage nach dem Datum als Batch zu brauchen. Also auf jeden Fall Danke, Danke, Danke, Danke, Danke.

Wie ist das dann eigentlich mit dem Beitrag später auf gelöst setzen, wenn in meinem Fall jetzt die Lösung damit erreicht wäre?
Member: Biber
Biber Feb 22, 2007 at 16:44:11 (UTC)
Goto Top
Moin hilfesuchend,
Wie ist das dann eigentlich mit dem Beitrag später auf gelöst setzen, wenn in meinem Fall jetzt die Lösung damit erreicht wäre?

Sollte dieser Fall eintreten, was ich ganz optimistisch sehe, dann
- anmelden
- bei der Eröffnungsfrage (dem eigentlichen Betrag) auf "Editieren" klicken
- das Kontrollkästchen "Dieser Beitrag gilt als gelöst.." ankreuzen per Maus.

Dieses kleine Kreuzchen wird durch interne, hoch spezialisierte objektorientierente 32-Bit-Routinen zu einem grossen grünen Haken aufgebrezelt, der dann weithin sichtbar ist und den Mod dieses Seitenarms des Forums immer wieder erfreut.

Gruss
Biber
Member: Biber
Biber Feb 22, 2007 at 17:58:52 (UTC)
Goto Top
Hmmm,

mit dieser oben geposteten Works-as-designed-Lösung, die bastla da entsprechend der Vorgaben runtergetippselt hat, werde ich irgendwie nicht richtig warm.

Das geht mir zu sehr über Bande...

Alternative wäre ein anderer Batch-Oneliner, der wenigstens über das "echte" Änderungsdatum geht:
>for /f "tokens=3*" %i in ('dir /a-d /t:w *.*^|find ".01.2007"') do @move /y "%j" X:\Zielverzeichnis  
-bzw. in einem Batch- 
for /f "tokens=3*" %%i in ('dir /a-d /t:w *.*^|find ".01.2007"') do @move /y "%%j" X:\Zielverzeichnis  

Der im Moment fest verdrahtete Suchstring ".01.2007" sollte natürlich besser als Parameter übergeben werden oder alternativ "ausgerechnet" werden als "vom Vormonat".
Diese Spitzfindigkeiten schenke ich mir/uns erstmal.
Ich wollte hier nur nochmals die grundsätzliche Strategie diskutieren.

Gruss
Biber
Member: bastla
bastla Feb 22, 2007 at 19:45:51 (UTC)
Goto Top
@Biber

Wenn man die vielleicht eher geringe Wahrscheinlichkeit einer abweichenden Einstellung in %DIRCMD% außer Acht lässt, fällt das "/t:w" unter Fleißaufgabe - sehe ich das richtig?

Sofern hilfesuchend sicher ist, dass der Suchstring seine Dateien eindeutig identifiziert, müsste die "findstr"-Lösung genügen - ganz wohl fühle ich mich aber auch nicht dabei.

Im übrigen wären auch hier wieder ev schon im Zielverzeichnis vorhandene Dateien zu bedenken (ich hatte absichtlich das "/y" beim "move" weggelassen).

Grüße
bastla
Member: Biber
Biber Feb 22, 2007 at 21:41:25 (UTC)
Goto Top
@bastla

Wenn man die vielleicht eher geringe Wahrscheinlichkeit einer abweichenden Einstellung in %DIRCMD% außer Acht lässt,
Ja, das %DIRCMD% lasse ich eigentlich immer unter den Tisch fallen.
Ich glaube auch nicht, dass es irgendjemand benutzt, der auch Batches oder Tasks am Laufen hat.
Die Seiteneffekte sind doch gar nicht kalkulierbar.
... fällt das "/t:w" unter Fleißaufgabe - sehe ich das richtig?
Jepp. Tust Du.
Um ganz ehrlich zu sein, da hab ich vorhin einen Aussetzer gehabt. Natürlich ist dieses "/t:w" gleichbedeutend mit dem Standard. Also überflüssig.
War wohl etwas unkonzentriert, weil Werder Bremen heute gegen Ajax spielt und das lenkt doch ab.
Sofern hilfesuchend sicher ist...
Hmm... das hat natürlich auch mit Sicher-Sein-Können zu tun, klar... aber vor allen Dingen:
es ist mir einfach zu sehr um die Ecke konstruiert, in eine Datei reinschauen zu wollen, um deren Änderungsdatum festzustellen.
[Also eher ein ästhetisches Problem - so etwas tut man/frau einfach nicht.]

Grüße zurück
Biber
Member: hilfesuchend
hilfesuchend Feb 23, 2007 at 18:25:37 (UTC)
Goto Top
Hallo, hallo an die schnellsten Helfer die ich kenne,

also hat alles soweit super geklappt. Bin mir auch sicher, das diese Zeile ausreicht. Jetzt hab ich aber noch eine kleine Frage. Ihr müsst schon echt entschuldigen, aber ich bin wirklich sowas von Anfänger. Wie kann ich die Suche, der Schnelligkeit halber, auf die erste Zeile beschränken? Das soll dann auch die letzte Belästigung an Euch sein. Ich bin Euch zu grösstem Dank verpflichtet face-smile
Member: hilfesuchend
hilfesuchend Feb 23, 2007 at 18:25:48 (UTC)
Goto Top
Hab da etwas gelogen, ich werde Eure Hilfe ja vielleicht irgendwann noch mal brauchen. Also vielleicht ist das doch nicht die letzte Belästigung face-smile
Member: bastla
bastla Feb 23, 2007 at 22:33:00 (UTC)
Goto Top
Hallo hilfesuchend!

Zunächst einmal muss ich Dich enttäuschen - mir fällt keine vernünftige Variante ein, um die Suche zu beschleunigen. Würde sich das überhaupt auszahlen (dazu müsstest Du viele große Dateien haben, die das Kriterium nicht erfüllen)?

Auf der anderen Seite: Was spricht eigentlich gegen Biber's auf dem Änderungsdatum basierende Lösung?

Grüße
bastla