Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch Abfrage Backup der letzten X Tage

Frage Entwicklung Batch & Shell

Mitglied: Shakeme

Shakeme (Level 1) - Jetzt verbinden

10.02.2011, aktualisiert 13:31 Uhr, 5060 Aufrufe, 28 Kommentare

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 - Klicke auf das Bild, um es zu vergrößern



Bild2
5ed0b8e09be93a2a6016ed9cfb9f279c - Klicke auf das Bild, um es zu vergrößern
28 Antworten
Mitglied: bastla
10.02.2011 um 10:36 Uhr
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
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 10:36 Uhr
Aloha,

ich glaube, die einfachste Umsetzung wäre:
01.
REM Prüfen ob das TrueType Laufwerk auf "N" gemountet wurde 
02.
REM auswählen ob in Ordner Backup1 oder 2 
03.
chcp 1252 
04.
REM Umschaltung Codepage f Umlaute 
05.
@Echo off 
06.
Set ToFolder=%Date:~-4,4%%Date:~-7,2%%Date:~-10,2% 
07.
set /p Datum="Bitte Datum angeben im Format MM-TT-JJJJ:" 
08.
 
09.
xcopy "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro" /D:%Datum% /I/S 
10.
xcopy "G:\Word" "N:\Backup\%ToFolder%/Word" /D:%Datum% /I/S 
11.
xcopy "G:\SIS" "N:\Backup\%ToFolder%/SIS" /D:%Datum% /I/S 
12.
 
13.
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
Bitte warten ..
Mitglied: bastla
10.02.2011 um 10:48 Uhr
@Skyemugen
Ok, ich will Dir ja den Spaß lassen - daher nur ein kurzes c&p für die Datumsberechnung anhand einer Tageanzahl:
01.
set "G=%temp%\Gestern.vbs" 
02.
>%G% echo WScript.Echo DateAdd("d",-1, Date) 
03.
for /f %%i in ('cscript //nologo %G%') do set "Gestern=%%i"
Grüße
bastla
Bitte warten ..
Mitglied: Shakeme
10.02.2011 um 10:49 Uhr
@ 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
Bitte warten ..
Mitglied: bastla
10.02.2011 um 11:12 Uhr
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.
Bitte warten ..
Mitglied: Shakeme
10.02.2011 um 12:03 Uhr
@ 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
Bitte warten ..
Mitglied: bastla
10.02.2011 um 12:10 Uhr
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
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 13:30 Uhr
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é
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 13:37 Uhr
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é
Bitte warten ..
Mitglied: Shakeme
10.02.2011 um 13:41 Uhr
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
Bitte warten ..
Mitglied: Shakeme
10.02.2011 um 13:47 Uhr
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.
Bitte warten ..
Mitglied: bastla
10.02.2011 um 13:53 Uhr
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
Bitte warten ..
Mitglied: Shakeme
10.02.2011 um 14:00 Uhr
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
Bitte warten ..
Mitglied: bastla
10.02.2011 um 14:02 Uhr
[OT]
@Skyemugen
... was wieder einmal beweist, dass "Spaß" Definitionssache ist ...

Grüße
bastla

P.S.: Du hattest wenigsten schon etwas zu knabbern - mein Mittagessen war etwas ganz Ausgefallenes ...
[/OT]
Bitte warten ..
Mitglied: bastla
10.02.2011 um 14:03 Uhr
Ich hätte eigentlich gehofft, the winner is Lutz

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 14:10 Uhr
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)
Bitte warten ..
Mitglied: Shakeme
10.02.2011 um 14:17 Uhr
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
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 14:37 Uhr
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é
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 15:26 Uhr
.... Code kommt später nochmal komme hier nicht zum Nachdenken
Bitte warten ..
Mitglied: Shakeme
10.02.2011 um 16:29 Uhr
Ein Versuch - ein Treffer !!!

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

Danke Andre


LG
Lutz
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 16:31 Uhr
Aloha,

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

greetz André
Bitte warten ..
Mitglied: bastla
10.02.2011 um 16:35 Uhr
Hallo Skyemugen!

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

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 16:45 Uhr
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é
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 17:09 Uhr
Aloha Lutz!

so jetzt hoffe ich aber mal, dass ich nicht wieder irgendwelchen Käse vergessen habe ^.^
01.
@echo off 
02.
REM Prüfen ob das TrueType Laufwerk auf "N" gemountet wurde 
03.
REM auswählen ob in Ordner Backup1 oder 2 
04.
chcp 1252 
05.
REM Umschaltung Codepage f Umlaute 
06.
Set "ToFolder=%Date:~-4,4%%Date:~-7,2%%Date:~-10,2%" 
07.
set /p Anzahl="Bitte die Anzahl der Tage für's Backup angeben:" 
08.
set "G=%temp%\daysago.vbs" 
09.
 
10.
REM Das VBScript wird erzeugt, für die Datumsberechnung 
11.
>%G% echo wscript.echo DateAdd("d",-%Anzahl%,Date) 
12.
for /f %%i in ('cscript //nologo %G%') do set "Xdaysago=%%i" 
13.
 
14.
REM TT.MM.JJJJ soll zu MM-TT-JJJJ 
15.
FOR /f "tokens=1-3 delims=." %%a in ("%Xdaysago%") do Set Xdaysago=%%b-%%a-%%c 
16.
 
17.
xcopy "X:\Büro Bernd" "N:\Backup\%ToFolder%/Büro" /D:%Xdaysago% /I/S 
18.
xcopy "G:\Word" "N:\Backup\%ToFolder%/Word" /D:%Xdaysago% /I/S 
19.
xcopy "G:\SIS" "N:\Backup\%ToFolder%/SIS" /D:%Xdaysago% /I/S 
20.
 
21.
echo Copy ended 
22.
del %G% 
23.
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é
Bitte warten ..
Mitglied: 60730
10.02.2011 um 19:22 Uhr
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
(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
Ohne alles zu lesen
und denkt einer hätts vergessen
[/edit]
Bitte warten ..
Mitglied: bastla
10.02.2011 um 19:43 Uhr
@T-Mo
Vielleicht hilft ja doch die Zeile 4 ...

Grüße
bastla
Bitte warten ..
Mitglied: Shakeme
11.02.2011 um 08:48 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch die alle Dateien löscht die Älter als 3 Tage sind (5)

Frage von Azubine zum Thema Batch & Shell ...

Batch & Shell
gelöst Problem mit "username" abfrage in Batch Dateien (5)

Frage von KriAIT zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...