shakeme
Goto Top

Batch Abfrage Backup der letzten X Tage

Hallo,

ich bin absoluter Anfänger was Batch Dateien betrifft und brauche etwas Unterstützung.

Ich habe eine kleine Batch mit der ich Backups auf einen USB ziehe.
Das funktioniert soweit ganz gut.

REM Prüfen ob das TrueType Laufwerk auf "N" gemountet wurde
REM auswählen ob in Ordner Backup1 oder 2
chcp 1252
REM Umschaltung Codepage f Umlaute
@echo off
Set ToFolder=%Date:~-4,4%%Date:~-7,2%%Date:~-10,2%

xcopy "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro" /D:02-01-2011 /I/S
xcopy "G:\Word" "N:\Backup\%ToFolder%/Word" /D:02-01-2011 /I/S
xcopy "G:\SIS" "N:\Backup\%ToFolder%/SIS" /D:02-01-2011 /I/S

Echo Copy ended


Blöd ist ich muss jedesmal die Batch öffnen und eintragen ab welchem Datum das Backup gezogen werden soll.
Benutzerfreundlichkeit ist anders, ich hätte gerne das mich das Batch fragt:

"Backup der letzten X Tage?"

Ich hab jetzt schon einiges gesucht und auch gefunden aber das was ich gefunden habe, kann ich nicht auf
meine Anforderung hin abstricken.

Wenn man Ahnung hat ist es sicher ganz einfach. Wenn sich also jemand erbarmt einem absoluten Batch-Anfänger
zu helfen würde ich mich schon sehr freuen!

LG
Lutz

Bild1
a797267776d3d167688d7b72cb59a5ee



Bild2
5ed0b8e09be93a2a6016ed9cfb9f279c

Content-Key: 160506

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

Printed on: April 19, 2024 at 02:04 o'clock

Member: bastla
bastla Feb 10, 2011 at 09:36:02 (UTC)
Goto Top
Hallo Shakeme und willkommen im Forum!

Weshalb überhaupt eine datumsmäßige Beschränkung? Wenn Du den Schalter "/D" ohne Angabe eines Datums verwendest, werden einfach alle neueren Dateien kopiert ...

Grüße
bastla
Member: Skyemugen
Skyemugen Feb 10, 2011 at 09:36:33 (UTC)
Goto Top
Aloha,

ich glaube, die einfachste Umsetzung wäre:
REM Prüfen ob das TrueType Laufwerk auf "N" gemountet wurde  
REM auswählen ob in Ordner Backup1 oder 2
chcp 1252
REM Umschaltung Codepage f Umlaute
@Echo off
Set ToFolder=%Date:~-4,4%%Date:~-7,2%%Date:~-10,2%
set /p Datum="Bitte Datum angeben im Format MM-TT-JJJJ:"  

xcopy "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro" /D:%Datum% /I/S  
xcopy "G:\Word" "N:\Backup\%ToFolder%/Word" /D:%Datum% /I/S  
xcopy "G:\SIS" "N:\Backup\%ToFolder%/SIS" /D:%Datum% /I/S  

Echo Copy ended

greetz André

edit: @bastla, wo bleibt denn da der Spaß? ^.^
edit²: Die Umsetzung des Datums lässt sich natürlich noch verbessern, ist erstmal nur die einfachste Umsetzung :P
Member: bastla
bastla Feb 10, 2011 at 09:48:47 (UTC)
Goto Top
@Skyemugen
Ok, ich will Dir ja den Spaß lassen - daher nur ein kurzes c&p face-wink für die Datumsberechnung anhand einer Tageanzahl:
set "G=%temp%\Gestern.vbs"  
>%G% echo WScript.Echo DateAdd("d",-1, Date)  
for /f %%i in ('cscript //nologo %G%') do set "Gestern=%%i"  
Grüße
bastla
Member: Shakeme
Shakeme Feb 10, 2011 at 09:49:28 (UTC)
Goto Top
@ Andrè

Hi Andrè,

sieht elegant aus, funktioniert aber nicht.
Die Rückmeldung lautet immer "konnte angegebenen Pfad nicht finden".

Müßte da nicht so was rein wie:

md "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro"
...
...


@ Bastla
Weil mir so das Batch für jedes Backup einen eigenen Datums-Ordner erstellt.


Vielen Dank

Lutz
Member: bastla
bastla Feb 10, 2011 at 10:12:58 (UTC)
Goto Top
Hallo Shakeme!
Weil mir so das Batch für jedes Backup einen eigenen Datums-Ordner erstellt.
Ist ein Argument - ließe sich aber auch lösen, indem Du anstelle von "/D" den Schalter "/M" verwendest ...

Grüße
bastla

P.S.: Der Vorschlag von Skyemugen ändert eigentlich nix am grundsätzlichen Ablauf Deines Batches oder an den beteiligten Ordnern, sondern ersetzt nur das als Konstante eingetragene Datum durch eine Variable, deren Wert Du eingeben kannst - wenn der Batch daher vorher funktioniert hat, sollte er es immer noch tun; ein "md" vorweg ist jedenfalls bei "xcopy" nie erforderlich.
Member: Shakeme
Shakeme Feb 10, 2011 at 11:03:54 (UTC)
Goto Top
@ Bastla

Nee, in dem Vorschlag von Skyemugen muss ein Fehler sein, ohne die Zusätze läuft der Batch, mit den Ergänzungen nicht.

Ich hab den Eindruck als wenn die Datums Variable aus
set /p Datum="Bitte Datum angeben im Format MM-TT-JJJJ:"

Nicht richtig in
xcopy "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro" /D:%Datum% /I/S
umgesetzt werden kann.

Da ich von Batch-Programmierung eh keine Ahnung habe kann ich mir auch
keinen Reim darauf machen woran der Fehler liegen kann.

LG
Lutz

P.S.: Danke das Du an meinem Prob dranbleibst
Member: bastla
bastla Feb 10, 2011 at 11:10:35 (UTC)
Goto Top
Hallo Shakeme!

Ändere jeweils das "echo off" auf "echo on" (BTW: würde ich als erste Zeile des Batches verwenden) und vergleiche die jeweils angezeigten Befehle ...

Grüße
bastla
Member: Skyemugen
Skyemugen Feb 10, 2011 at 12:30:07 (UTC)
Goto Top
Aloha bastla,

[OT]ach Spaß hatte ich die letzten Stunden auf Arbeit genug, scheinbar hat ein VBScript in unserem „SAP-für-arme“ aka MOS'aik nicht mehr so richtig PDFs erstellen wollen bzw. nicht korrekt, sodass Thunderbird eine nicht vorhandene Datei im Anhang bekam ... ich hasse die Programmierer, die zwei verschiedene Schlüssel für Zweige verwenden (für Anzeige und für Ausgabe lol) - da hatte ich jetzt Stunden dran zu knabbern[/OT]

wollte eigentlich hier noch weiter dran daddeln am Datumszeug ^.^

greetz André
Member: Skyemugen
Skyemugen Feb 10, 2011 at 12:37:12 (UTC)
Goto Top
Aloha,

phh und du gibst auch das Format so an wie in diesem Fall dargestellt? (wie gesagt, wollte es optimieren, kam aber die letzten Stunden nicht dazu)

Monat-Tag-Jahr (und nicht evtl. aus Gewohnheit TT.MM.JJJJ oder so)?

Ich hatte den Test per
echo xcopy "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro" /D:%Datum% /I/S
ausgeführt, wurde alles ordnungsgemäß angezeigt (sollte also auch kopieren)

greetz André
Member: Shakeme
Shakeme Feb 10, 2011 at 12:41:24 (UTC)
Goto Top
Hi,

es ist wirklich komisch. Ich habe Zeile für Zeile (Bild1; siehe ganz oben) verglichen und finde keinen Fehler.

Lasse ich die alte Batch laufen (Bild 1, links) dann läuft das Backup problemlos durch. Sobald
ich aber die geänderte Batch laufen lasse (Bild 1, rechts) legt er nur einen Ordner mit dem aktuellen Datum an
aber keine Unterordner.

Auf Bild 2 kann man auch die mögliche Ursache sehen a) entweder liegt es am Pfad der nach dem Datum jetzt
ein Leerzeichen erhält das dort vermutlich nicht sein sollte ("N:\Backup\20110209 /Büro) oder b) es ist ein Problem
mit dem deutschen/englischen Datumsformat.

Ich bin echt ratlos.

Lutz
Member: Shakeme
Shakeme Feb 10, 2011 at 12:47:28 (UTC)
Goto Top
Hi,

ja ich habe insbesondere auf das Datumsformat geachtet und das auch mehrfach getestet, siehe Bild 2.
Um sicher zu sein habe ich den 11-11-2010 genommen, der deutsch und englisch jeweils gültig ist.

Auf Bild 2, in der 4. letzten Zeile kannst du aber auch sehen, das nach dem Datum ein Leerzeichen kommt
das dort eventuell nicht sein sollte.

Ich vermute ja das ich die Fehlerursache bin .

LG
Lutz

P.S.: In Zeile 2 von Bild 2 kann man aber auch sehen, das dein Datumsparameter richtig übergeben wird.
Member: bastla
bastla Feb 10, 2011 at 12:53:10 (UTC)
Goto Top
Hallo Shakeme!

Ändere die Zeile 6 auf
Set "ToFolder=%Date:~-4,4%%Date:~-7,2%%Date:~-10,2%"
Ich vermute ja das ich die Fehlerursache bin .
Da kann ich Dich entlasten - ist leider eine böse Falle der Forumssoftware, die am Ende der Zeile ein Leerzeichen anfügt ...

BTW: Weshalb verwendest Du eigentlich vor dem letzten Ordner des Pfades nicht auch einen Backslash - auch wenn's Windows egal ist (wenn es Anführungszeichen um den Pfad herum gibt) - siehe Bild 2?

Grüße
bastla
Member: Shakeme
Shakeme Feb 10, 2011 at 13:00:16 (UTC)
Goto Top
And the winner is ..... Bastla

Vielen Dank an Bastla und Andre!

Die Änderung in Zeile 6 hat es gebracht!
Das mit dem Backslash ändere ich noch.

LG
Lutz
Member: bastla
bastla Feb 10, 2011 at 13:02:11 (UTC)
Goto Top
[OT]
@Skyemugen
... was wieder einmal beweist, dass "Spaß" Definitionssache ist ... face-wink

Grüße
bastla

P.S.: Du hattest wenigsten schon etwas zu knabbern - mein Mittagessen war etwas ganz Ausgefallenes ...
[/OT]
Member: bastla
bastla Feb 10, 2011 at 13:03:38 (UTC)
Goto Top
Ich hätte eigentlich gehofft, the winner is Lutz face-wink

Grüße
bastla
Member: Skyemugen
Skyemugen Feb 10, 2011 at 13:10:27 (UTC)
Goto Top
Aloha bastla,

ist dem so? Wenn ich aus dem Quelltext c&p habe ich kein Leerzeichen dahinter, nunja wie dem auch sei - ein paar Anführungszeichen haben ja auch noch nie geschadet, höhö.

greetz André

P.S.: Gut, er gibt sich mit der Datumsangabe zufrieden, dann spar ich mir das for gebastel (wollte das Format TT.MM.JJJJ zu MM-TT-JJJJ eigentlich umändern lassen ^.^ - man gibt ja doch meist gewohntermaßen das erste Format an)
Member: Shakeme
Shakeme Feb 10, 2011 at 13:17:55 (UTC)
Goto Top
Hi Andre,

besser wäre das geänderte Datumsformat ja schon und optimal die Angabe "Backup der letzten x Tage"
Aber ich wollte als Anfänger ja nicht gleich rumschmarotzen und der Spatz ist besser als die Taube auf dem Dach.

Die Lösung ist jetzt allemal besser als das was ich am Anfang hatte, ich hab jetzt auch noch ein "dir backup" eingefügt
und nach set /p Datum="Bitte Datum angeben im Format MM-TT-JJJJ:" hab ich noch ein Pause. Damit kann ich jetzt
auch sehen von wann das letzte Backup ist.

Also nochmal, Vielen Dank

Lutz
Member: Skyemugen
Skyemugen Feb 10, 2011 at 13:37:57 (UTC)
Goto Top
Aloha,

achja es war ja mal so angedacht (stimmt, daher der c&p-Tipp von bastla, wunderte mich schon) - wenn ich heute wieder klaren Kopf hab, bau ich's dir um, hab momentan bissl den Kopf auf Arbeit voll (zum Textverfassen reicht's aber noch ^.^)

greetz André
Member: Skyemugen
Skyemugen Feb 10, 2011 at 14:26:32 (UTC)
Goto Top
Code kommt später nochmal komme hier nicht zum Nachdenken
Member: Shakeme
Shakeme Feb 10, 2011 at 15:29:47 (UTC)
Goto Top
Ein Versuch - ein Treffer !!!

Großartig, hat sofort funktioniert. Ist schon Klasse was in Foren an Know-How vorhanden ist.

Danke Andre


LG
Lutz
Member: Skyemugen
Skyemugen Feb 10, 2011 at 15:31:52 (UTC)
Goto Top
Aloha,

nein, bitte lies mein edit (versuch mal 10 Tage oder 11 ... es wird nicht funktionieren), bekommst schon noch was funktionierendes heute =)

greetz André
Member: bastla
bastla Feb 10, 2011 at 15:35:23 (UTC)
Goto Top
Hallo Skyemugen!

Verwende doch einfach "DateAdd()" (siehe oben) und mach die Zerlegung wieder im Batch ...

Grüße
bastla
Member: Skyemugen
Skyemugen Feb 10, 2011 at 15:45:37 (UTC)
Goto Top
Zitat von @bastla:
Hallo Skyemugen!

Verwende doch einfach "DateAdd()" (siehe oben) und mach die Zerlegung wieder im Batch ...

Grüße
bastla

Aloha bastla,

hm ja werde ich wohl, habe versucht im vbs beide Varianten zu mixen aber haut dann mit dem Monat nicht hin (er zieht die Tage aber korrekt ab ... gut, außer dass der Februar keine 31 hat haha)

greetz André
Member: Skyemugen
Skyemugen Feb 10, 2011 at 16:09:05 (UTC)
Goto Top
Aloha Lutz!

so jetzt hoffe ich aber mal, dass ich nicht wieder irgendwelchen Käse vergessen habe ^.^
@echo off
REM Prüfen ob das TrueType Laufwerk auf "N" gemountet wurde  
REM auswählen ob in Ordner Backup1 oder 2
chcp 1252
REM Umschaltung Codepage f Umlaute
Set "ToFolder=%Date:~-4,4%%Date:~-7,2%%Date:~-10,2%"  
set /p Anzahl="Bitte die Anzahl der Tage für's Backup angeben:"  
set "G=%temp%\daysago.vbs"  

REM Das VBScript wird erzeugt, für die Datumsberechnung
>%G% echo wscript.echo DateAdd("d",-%Anzahl%,Date)  
for /f %%i in ('cscript //nologo %G%') do set "Xdaysago=%%i"  

REM TT.MM.JJJJ soll zu MM-TT-JJJJ
FOR /f "tokens=1-3 delims=." %%a in ("%Xdaysago%") do Set Xdaysago=%%b-%%a-%%c  

xcopy "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro" /D:%Xdaysago% /I/S  
xcopy "G:\Word" "N:\Backup\%ToFolder%/Word" /D:%Xdaysago% /I/S  
xcopy "G:\SIS" "N:\Backup\%ToFolder%/SIS" /D:%Xdaysago% /I/S  

echo Copy ended
del %G%
pause

*puhh* würden mich nicht alle paar Minuten die Mitarbeiter nerven, wär das Ding längst vorher so gegessen

nunja, mein Dank für das DateAdd geht natürlich an bastla und bei der for-Schleife muss man Bibers Workshop Batch for Runaways - Part III danken =) (ja, ich weiß, die ist sausimpel aber ich habe heute einfach keinen klaren Gedanken mehr zusammenbekommen vor dem Feierabend)

greetz André
Mitglied: 60730
60730 Feb 10, 2011 at 18:22:28 (UTC)
Goto Top
Moin zusammen,

Zitat von @Skyemugen:
Aloha Lutz!

so jetzt hoffe ich aber mal, dass ich nicht wieder irgendwelchen Käse vergessen habe ^.^
xcopy "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro" /D:%Xdaysago% /I/S

Doch - vielleicht eventunell den Tipp, die Batch in edit oder Notepad++ zu erzeugen und nicht in Notepad face-wink
(Ihr hattet es ja mit dem C&P)
"Büro dem Ümlaut wegen....

Gruß

[edit]
@bastla:
Zeile Vier?
und die fände ich hier?
Das kommt davon, wenn man malt in fremden Papier face-wink
Ohne alles zu lesen
und denkt einer hätts vergessen
[/edit]
Member: bastla
bastla Feb 10, 2011 at 18:43:21 (UTC)
Goto Top
@t-mo
Vielleicht hilft ja doch die Zeile 4 ...

Grüße
bastla
Member: Shakeme
Shakeme Feb 11, 2011 at 07:48:57 (UTC)
Goto Top
Herzlichen Dank!

Ich bin echt überwältigt von eurer Hilfeleistung. Man findet es ja ganz häufig in Foren, das Anfängern
erstmal geraten wird a) zu googeln sich b) ein Handbuch zu kaufen c) nicht so blöde Fragen zu stellen und
d) die Finger wegzulassen von Dingen die man nicht versteht.

Das einem Anfänger in kurzester Zeit tatkräftig unter die Arme gegriffen wird ist dagegen nicht mehr
so oft anzutreffen.

Deswegen von mir ein dickes Fettes Lob

LG aus Stuttgart

Lutz
Member: simsons
simsons Feb 11, 2011 at 09:56:16 (UTC)
Goto Top