Win xp batch-datei für xcopy – dateien ab Datum xx

Hallo an alle ExpertInnen,

ich suche für die tägliche Sicherung von einzelnen neuen oder geänderten Dateien eine Batchdatei.
Sowas hatte ich mal zu 3.1-Zeiten (lang ist’s her!), weiß aber leider die Syntax nicht mehr.

Es geht um Dateien mit .xls und/oder .doc-Endung, liegen alle auf d:\ sowie auf verschiedenen d:\Unterverzeichnissen.

Es sollen alle diese Dateien ab Speicher-Datum xx.10.10 in ein Verzeichnis d:\tagessicherung kopiert werden.

Kann mir bitte jemand sagen, wie ich das schreiben muß und in welches Verzeichnis auf c:\ die .bat gespeichert werden muß, damit es funktioniert.

Danke im voraus.

Gruß G.

Hallo Gudrun,

geh mal in die Eingabeaufforderung (Start - Ausführen - cmd.exe) und gib dort
„help xcopy“ (ohne Anführungszeichen) ein. Dann kannst du dir die Parameter raussuchen, die du brauchst. Evtl. musst du in der Batch-Datei xcopy 2x ausführen, einmal für die .xls und einmal für die .doc Dateien.

Gruß, Andreas

Hallo Andreas,

geh mal in die Eingabeaufforderung (Start - Ausführen -
cmd.exe) und gib dort
„help xcopy“ (ohne Anführungszeichen) ein. Dann kannst du dir
die Parameter raussuchen, die du brauchst.

danke, soweit war ich schon. :wink:
Es klappt auch mit dem Parameter für’s Datum, aber nur, wenn die Dateien im Stammverzeichnis liegen.
Ich suche aber immer noch einen Parameter für Dateien in Unter- und Unter-Unterverzeichnissen.

Vielleicht trügt mich auch meine Erinnerung und sowas gab es auch früher schon nicht.
Mal schauen, ob ich Lust und Laune habe, nach dem alten PC im Keller zu schauen oder weiterhin umständlich jedes Verzeichnis einzeln anklicken muß! :wink:

Gruß G.

Hallo Gudrun,

vielleicht hilft dir das hier weiter:
http://www.heise.de/ct/hotline/Dateien-aus-Unterverz…

Gruß, Andreas

1 Like

ich suche für die tägliche Sicherung von einzelnen neuen oder
geänderten Dateien eine Batchdatei.

Für so etwas würde ich robocopy nehmen.

Infos dazu gibt’s hier: http://www.wintotal.de/artikel/artikel-2007/91.html
Runterladen kannst du es z.B. hier: http://www.msu-hb.de/system/system/robocopy.htm

Gruß TL

Hallo Andreas,

vielen Dank, daß Du das

vielleicht hilft dir das hier weiter:
http://www.heise.de/ct/hotline/Dateien-aus-Unterverz…

ausgebuddelt hast.
Das scheint mir in der Tat die Lösung zu sein. Leider weiß ich überhaupt nicht, wie ich der Kiste das jetzt beibringen soll, weil ich Anwender bin, kein Programmierer! :wink:

Kannst Du mir bitte genau(!) sagen, was ich wo eingeben, wie und wo speichern und wie aufrufen muß?

Mir genügt die ganz einfache Variante, weil:

  • weder in Ordner- noch in Dateinamen Leerzeichen sind,
  • es keine doppelten Dateinamen gibt,
  • überschrieben werden soll,
  • ich keine Dateipfade brauche,
  • ich keine Log-Datei brauche.

Danke schonmal.

Gruß G.

Hallo TL,

Für so etwas würde ich robocopy nehmen.

Infos dazu gibt’s hier:
http://www.wintotal.de/artikel/artikel-2007/91.html
Runterladen kannst du es z.B. hier:
http://www.msu-hb.de/system/system/robocopy.htm

danke für die Links.
Ich habe aber den Eindruck, daß Robocopy eine Nummer zu groß ist für mein aktuelles „Problem“. Für die Gesamt-Datensicherung habe ich schon ein Tool —>Traybackup.
Ich hoffe, es findet sich noch eine Lösung mit xcopy. :wink:

Gruß G.

Sorry, Gudrun,

hatte gestern keine Zeit mehr. Die Lösung mit xcopy kriegst zu heute Abend.

Gruß, Andreas

1 Like

Hallo Gudrun,

so, ich habe mal ein bisschen was zusammengebastelt aus der Webseite, dich ich verlinkt hatte. Hier mal eine (hoffentlich) genaue Anleitung:

  1. Starte den Windows Editor.

  2. Kopiere den folgenden Code in den Editor:

    @echo off
    echo Bitte das Datum eingeben, ab dem kopiert werden soll.
    echo WICHTIG! Im Format MM-TT-JJ
    echo Beispiel: Kopieren ab dem 3. Mai 2009. Eingabe: 05-03-09
    set /p datum=
    for /f „tokens=*“ %%f in (‚dir /b /s „d:*.xls“‘) do xcopy „%%f“ d:\tagessicherung /D:%datum% /I /EXCLUDE:smiley::\exclude.txt
    for /f „tokens=*“ %%f in (‚dir /b /s „d:*.doc“‘) do xcopy „%%f“ d:\tagessicherung /D:%datum% /I /EXCLUDE:smiley::\exclude.txt

  3. Speichere die Datei ab, egal in welches Verzeichnis. Gib ihr z.B. den Namen

    „sicherung.bat“

. Eigentlich ist der Name egal. Wichtig ist, dass er mit

.bat

endet, und dass du die Anführungszeichen mit schreibst. Andernfalls hängt der Editor nämlich automatisch .txt an, und das soll nicht sei.

  1. Schließe den Editor.

  2. Öffne erneut den Editor und trage den Text

    d:\tagessicherung\

ein.
6. Speichere die Datei mit dem Namen

exclude.txt

ab (diesmal ohne Anführungszeichen), und zwar im Verzeichnis D:\
7. Editor schließen.
8. Fertig. Wenn du jetzt auf

"sicherung.bat"

doppelklickst, solltest du gefragt werden, ab welchem Datum die Sicherungskopien erzeugt werden sollen. Gib das Datm in der Form MM-TT-JJ (!) ein. Dann sollte das Kopieren beginnen.

Bei mir hat das jedenfalls so funktioniert. Aber der Teufel ist ein Eichhörnchen und steckt wie immer im Detail. Melde dich also, wenn’s Probleme gibt, bzw. sag bitte auch Bescheid, wenn es geklappt hat.

Gruß, Andreas

1 Like

Große Klasse - Danke!
Hallo Andreas,

super! :wink:
Ich bin begeistert! :wink:
Es hat auf Anhieb geklappt! :wink:

Herzlichen Dank für die Mühe, die Du Dir gemacht hast - auch das Bonbon mit dem exclude weiß ich wohl zu schätzen.

Der einzige Wermutstropfen ist, daß es etwas lange gedauert hat (halbe Stunde oder so). Ich bin schon gedanklich dabei, die Baumstruktur zu verändern, da ich auch viele Ordner habe, in denen dateimäßig nichts mehr passiert und die dann auch nicht durchsucht werden müssen.

Außerdem vermute ich auch, daß in der jetzigen getrennten Form mit *.xls und *.doc zwei komplette Suchläufe durchgeführt werden.
Das werde ich beim nächstenmal zu *.* zusammenfassen und hoffen, daß sich die Dauer dann nochmals reduziert.
Wenn sich dabei ein paar .jpg oder .pdf oder .txt druntermischen, ist das kein Problem.

Jedenfalls erspart mir die Batch ab sofort jede Menge Klickerei.

Nochmals großes Danke.

Gruß G.

Freut mich, dass es gleich geklappt hat.

Vielleicht solltest du dich für die Zukunft mal in den „Windows Script Host“ einarbeiten.
http://de.wikipedia.org/wiki/Windows_Script_Host
Damit kannst du u.a solche maßgeschneiderten Kopierakionen flexibler bewältigen als mit DOS. Ich benutze ihn häufig, für alle möglichen automatisierten Aufgaben.

Gruß, Andreas

1 Like

Hallo Andreas,

Freut mich, dass es gleich geklappt hat.

Vielleicht solltest du dich für die Zukunft mal in den
„Windows Script Host“ einarbeiten.
http://de.wikipedia.org/wiki/Windows_Script_Host

danke, jetzt weiß ich zumindest schonmal wie das heißt! :wink:
Ob ich’s kapiere, steht aber auf einem anderen Blatt.

Damit kannst du u.a solche maßgeschneiderten Kopierakionen
flexibler bewältigen als mit DOS. Ich benutze ihn häufig, für
alle möglichen automatisierten Aufgaben.

Vielleicht kannst Du mir noch zwei Tips geben?
Nachdem ich die Baumstruktur so verändert habe, daß nur noch in aktuellen Ordnern gesucht wird, ist die Batch in Nullkommanix durch.
Aber: Ich werde jedesmal gefragt, ob Datei [Dateiname] überschrieben werden soll.
Das ist deswegen ungewöhnlich, weil ich in ein neuangelegtes und somit absolut leeres Ziel-Verzeichnis kopiere. (Das gefüllte vom Vortag habe ich zuvor umbenannt in „tagessicherung_1“ und ein neues „tagessicherung“ wieder angelegt).
Hast Du eine Idee, welchen Parameter ich nehmen muß, damit nicht bei jeder Datei, die schonmal „dran“ war, nachgefragt wird.

Dann hätte ich auch gerne noch einen Parameter für seitenweises Anzeigen während des Suchlaufes. Bei DOS war das (glaube ich) „/p“, das funktioniert hier aber nicht.
Beim „Durchrauschen“ der Batch konnte ich zweimal das Wort „Fehler“ erkennen, mehr leider nicht. Dem würde ich gerne noch auf die Spur gehen.

Danke schonmal.

Gruß G.

Hallo Gudrun,

in der Hilfe zu xcopy kannst du lesen:
„/y Unterdrückt die Aufforderung zur Bestätigung, dass eine vorhandene Zieldatei überschrieben werden soll.“

Zur Seitenweisen Ausgabe versuch mal an die Zeile dranzuhängen

| more

Was das genau macht, kannst du in der Hilfe zu more nachlesen.
kann aber sein, dass es nicht so klappt, wie du es gerne hättest. Das liegt dann vermutlich daran, dass xcopy seine Fehlermeldungen nach stderr ausgibt und nicht nach stdout, das von more gelesen wird. Dann müssten wir uns noch was anderes ausdenken.

Gruß, Andreas

1 Like

Nachtrag
Um das Problem mit stderr und stdout zu beheben, hänge an die Zeile nicht nur

 | more 

an, sondern

 2\>&1 | more 

Gruß, Andreas

1 Like

Hallo Andreas,

sorry, daß ich erst jetzt antworte - gestern war mein Läppi nicht da, wo ich war. :wink:

in der Hilfe zu xcopy kannst du lesen:
„/y Unterdrückt die Aufforderung zur Bestätigung, dass eine
vorhandene Zieldatei überschrieben werden soll.“

Das /y funktioniert, aber es bleibt mir nach wie vor ein Rätsel, weil es definitiv keine vorhandenen Zieldateien gibt.
Egal, Hauptsache, ich muß nicht mehr dauernd „Ja“ sagen. :wink:

Das hier:

Zur Seitenweisen Ausgabe versuch mal an die Zeile dranzuhängen

| more

Was das genau macht, kannst du in der Hilfe zu more nachlesen.
kann aber sein, dass es nicht so klappt, wie du es gerne
hättest.

hat nicht geklappt, auch nicht mit dem Zusatz aus Deinem Nachtrag.

Das liegt dann vermutlich daran, dass xcopy seine
Fehlermeldungen nach stderr ausgibt und nicht nach stdout, das
von more gelesen wird.

Ich verstehe nur Bahnhof! :wink:

Dann müssten wir uns noch was anderes ausdenken.

Ist nicht mehr nötig.

Ich konnte glücklicherweise die beiden Fehlermeldungen jetzt entziffern: „Fehler beim Analysieren der Befehlszeile“.
Der Übeltäter ist wer-weiss-was (!) und zwar dieser Bug:

/t/alter-fehler-wieder-neu-im-programm-ae-oe-ue-ss/5…

Das wurde ja dann doch korrigiert, aber aus der „Fehlerzeit“ gab es halt noch einige Dateinamen mit „komischen“ Zeichen in meinem Explorer.
Daß die Batch von mind. 10 komischen Dateinamen nur 2 reklamiert hat, muß ich ja nicht verstehen, oder doch?

Es ist also alles paletti, Du kannst Dich zurücklehnen! :wink:

Ich danke Dir sehr.

Gruß G.