113726
Goto Top

Script zum Ordner kopieren pro Tag

Hallo,

ich möchte mir ein einfaches Script basteln, weiß aber nicht richtig weiter..

Das Script soll jede Nacht 2 Ordner auf eine andere Partition kopieren.

Es sollte auf der zweiten Partition aber so angelegt werden, das ich pro Tag einen Ordner oder so habe. Das also die Daten nicht imemr überschrieben werden.

Eventuell ist es ja sogar möglich, durch das Script automatisch als Archiv zu packen.

Wie müsste ich da vorgehen?

Bisher habe ich:


@echo off
xcopy C:\ProgramData\Lexware\premium\DB\ D:\Ordnersicherung\
xcopy C:\ProgramData\Lexware\premium\DB2\ D:\Ordnersicherung\
Exit

Vielen Dank im Voraus.

Gruß
Manuel

Content-ID: 244945

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

Ausserwoeger
Ausserwoeger 29.07.2014 um 12:10:07 Uhr
Goto Top
narthan
Lösung narthan 29.07.2014, aktualisiert am 30.07.2014 um 08:40:29 Uhr
Goto Top
Moin Manuel,

hier ein Bsp. Batch-Script von mir:

@echo off

set ordner1="C:\TestOrdner1"  
set ordner2="C:\Testordner2"  

xcopy /e %ordner1% "D:\Ordner_%date%\"  
xcopy /e %ordner2% "D:\Ordner_%date%\"  

"C:\Program Files\7-Zip\7z.exe" a -r archivname_%date%.zip "D:\Ordner_%date%\*"  

exit

Ich habe als Archivierungsprogramm 7zip genutzt, ist frei und kostenlos erhältlich, falls du es nicht bereits besitzt.
Mit der %date% Variable wird ein Ordner für den jeweiligen Tag, an dem das Skript ausgeführt wird erstellt.
Das Archiv wird dort abgelegt, wo sich das Script befindet....kannst du ja aber ganz einfach ändern, wenn du es woanders haben willst face-wink


Gruß, narthan
113726
113726 29.07.2014 um 12:55:03 Uhr
Goto Top
Vielen Dank euch beiden.
Robocopy klingt gut, werde es aber erstmal mit der Variante von Narthan probieren.

@narthan: Danke für das Script.

Das werde ich so ausprobieren.

Eine frage habe ich noch.

Anfangs wird ja der Ordner erstellt, wo die beiden Ordner reinkopiert werden.
Dieser wird dann gezippt und verschoben.

Kann ich mittels rm -r Befehl dann einfach den erstellten Ordner löschen lassen?
Ich benötige ja in erster Linie nur die Zip Datei.

Also z.b. rm -r "Ordner_%date%"?

Gruß
Manuel

PS.: Gibt es eine Batchmöglichkeit, welches kontrolliert wie viel Dateien in einem Ordner sind und ab einer bestimmten Zahl dann die ältesten löscht?
bzw. kann man so was sogar in die Batch mit einbringen?

Sonst wird ja der Ordner unendlich groß, wenn man nicht manuell löscht.
narthan
narthan 29.07.2014 aktualisiert um 13:11:37 Uhr
Goto Top
Heyho

Zitat von @113726:
Eine frage habe ich noch.
Kann ich mittels rm -r Befehl dann einfach den erstellten Ordner löschen lassen?
Ich benötige ja in erster Linie nur die Zip Datei.

Also z.b. rm -r "Ordner_%date%"?

Ja kannst du, wenn dir das Archiv reicht. Mit dem Befehl "rmdir" kannst du Verzeichnisse in Batch löschen, also z.B.:

rmdir /s /q "D:\Ordner_%date%"  

...hierbei ist jedoch zu beachten, dass er dank /s wirklich alles in dem Ordner und den Ordner selbst löscht und durch /q dies ohne Nachfragen erledigt.
Zu deiner PS-Frage weiß ich leider keine Antwort.


<e> Die Daten bzw Ordner sind mit rmdir dann übrigens wirklich weg, die landen nicht im Papierkorb face-wink </e>


Gruß, narthan
113726
113726 29.07.2014 aktualisiert um 13:21:15 Uhr
Goto Top
Da in der Zip Datei ja dann beide Ordner täglich verpackt werden (und täglich die Zip Dateien nochmals gesichert werden), reicht mir das vollkommen.

Habe jetzt die Batchdatei noch erweitert und werde das diese Nacht bzw. morgen früh, wenn noch keiner da ist einmal testen und schauen, ob es klappt.

Melde mich face-wink

Besten Dank!
bastla
Lösung bastla 29.07.2014, aktualisiert am 30.07.2014 um 08:40:33 Uhr
Goto Top
Hallo PM-Manuel und narthan!

Zum PS-Thema: Um die 7 neuesten ZIP-Dateien des Ordners "D:\ZIP-Dateien" zu behalten, etwa:
<code t<pe="plain">for /f "skip=7 delims=" %%i in ('dir /b /o-d "D:\ZIP-Dateien\*.zip"') do echo del "D:\ZIP-Dateien\%%i"

Das "echo" dient dem gefahrlosen Testen ...
Noch eine Anmerkung zum Datum: Anstelle von %date% würde ich mir das Datum etwa so zusammenbauen (lässt sich leichter sortieren):
set "Datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%"
Grüße
bastla
113726
113726 29.07.2014 um 16:25:00 Uhr
Goto Top
Hallo bastia,

ich werde das morgen früh gleich mit testen, vielen Dank.

Mit dem Datum weiß ich aber nicht genau, was dein Befehl bewirkt.

Wenn ich raten würde, dann mein ich: 2014-07-29, stimmt das?
Wenn ja, dann ist das nicht verkehrt, da hast du recht.


Gruß
Manuel
bastla
bastla 29.07.2014 um 16:48:08 Uhr
Goto Top
Hallo PM-Manuel!
Wenn ich raten würde, dann mein ich: 2014-07-29, stimmt das?
Gut geraten ... face-smile

Grüße
bastla
113726
113726 29.07.2014 um 16:52:10 Uhr
Goto Top
Schöne Sache, also kopiere ich das einfach am Anfang der batch mit rein (vor set ordner1="C:\TestOrdner1"
) und kann dann ganz normal den Befehl %date% nutzen, richtig? ;)
bastla
bastla 29.07.2014 um 16:59:14 Uhr
Goto Top
Hallo PM-Manuel!
kann dann ganz normal den Befehl %date% nutzen, richtig? ;)
Fast face-wink - die Variable heißt jetzt anstatt %date% natürlich %Datum% ...

Grüße
bastla
narthan
narthan 30.07.2014 um 07:46:55 Uhr
Goto Top
Moin moin

Ach bastla, hätte mich auch gewundert, wenn ich deinen Namen nicht in diesem Thread gesehen hätte face-wink

Zitat von @bastla:
Noch eine Anmerkung zum Datum: Anstelle von %date% würde ich mir das Datum etwa so zusammenbauen (lässt sich leichter
sortieren):
set "Datum=%date:~-4%-%date:~-7,2%-%date:~-10,2%"
> 

Das ist allerdings besser, werd ich mir auch gleich mal für die Zukunft merken face-smile

Grüße, narthan
113726
113726 30.07.2014 um 07:47:51 Uhr
Goto Top
Guten Morgen zusammen,

ich wollte nur kurz Rückmeldung geben, dass alles wunderbar funktioniert.

Habe das Script jetzt in die Aufgabenplanung eingebunden und lasse es heute Abend das erste mal automatisch laufen.


Vielen Dank noch mal für eure Hilfe.

Viele Grüße
Manuel
narthan
narthan 30.07.2014 um 08:35:47 Uhr
Goto Top
Moin Manuel,

Top, das hört man doch gern! Dann kannst du ja die Frage schließen face-smile

Grüße, narthan
113726
113726 30.07.2014 um 08:40:17 Uhr
Goto Top
Frage wird geschlossen face-smile

Vielleicht könnt ihr mir eine Info noch geben für die Zukunft.

Wenn ich jetzt an den Dateinamen der Zipdatei neben Datum auch die Uhrzeit mit anhängen würde wollen, wie müsste da die Variable heißen.
Die Zeit sollte dann so dargestellt werden: hhmmss

Ich brauche das für diese Zipdatei nicht, wäre trotzdem gut es für kommende Batchdateien zu wissen.

LG Manuel
narthan
narthan 30.07.2014 aktualisiert um 08:54:46 Uhr
Goto Top
Hey

Zitat von @113726:
Wenn ich jetzt an den Dateinamen der Zipdatei neben Datum auch die Uhrzeit mit anhängen würde wollen, wie müsste da
die Variable heißen.
Die Zeit sollte dann so dargestellt werden: hhmmss

Das sieht in etwa so aus wie bastla's Code für das Datum:

set "Zeit=%time:~0,2%-%time:~3,2%-%time:~6,2%"  

<EDIT> bzw., wenn du keine Trennstriche zwischen hh-mm-ss haben möchtest (also nur hhmmss), dann so:
set "Zeit=%time:~0,2%%time:~3,2%%time:~6,2%"  
</EDIT>

Die Variable für den Dateinamen wär dann %Zeit%.

Grüße, narthan
bastla
bastla 30.07.2014 aktualisiert um 09:38:44 Uhr
Goto Top
... und noch als Ergänzung: Mit einer zusätzlichen Zeile
set "Zeit=%Zeit: =0%"
sieht das für Zeiten vor 10:00 noch besser aus ...
Ach bastla, hätte mich auch gewundert, wenn ich deinen Namen nicht in diesem Thread gesehen hätte face-wink
Entschuldigung ... face-wink

Grüße
bastla
narthan
narthan 30.07.2014 um 10:09:33 Uhr
Goto Top
Hey

Zitat von @bastla:
Entschuldigung ... face-wink

Nicht falsch verstehen, ich find's super und warte schon immer auf deinen Post, weil du entweder die Lösung oder immer noch interessante Verbesserungsvorschläge bringst face-smile Also nicht entschuldigen! face-big-smile

Grüße, narthan
bastla
bastla 30.07.2014 um 11:05:42 Uhr
Goto Top
[OT]
Hallo narthan!

War ja auch nicht ernst gemeint - aber trotzdem danke ... face-smile

Grüße
bastla
[/OT]