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
Bild2
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
Bild2
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160506
Url: https://administrator.de/contentid/160506
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
28 Kommentare
Neuester Kommentar
Aloha,
ich glaube, die einfachste Umsetzung wäre:
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
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
@Skyemugen
Ok, ich will Dir ja den Spaß lassen - daher nur ein kurzes c&p für die Datumsberechnung anhand einer Tageanzahl:
Grüße
bastla
Ok, ich will Dir ja den Spaß lassen - daher nur ein kurzes c&p 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"
bastla
Hallo Shakeme!
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 "
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.
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é
[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é
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
ausgeführt, wurde alles ordnungsgemäß angezeigt (sollte also auch kopieren)
greetz André
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
greetz André
Hallo Shakeme!
Ändere die Zeile 6 auf
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
Ä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
[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]
@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]
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)
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)
Zitat von @bastla:
Hallo Skyemugen!
Verwende doch einfach "
Grüße
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é
Aloha Lutz!
so jetzt hoffe ich aber mal, dass ich nicht wieder irgendwelchen Käse vergessen habe ^.^
*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é
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é
Moin zusammen,
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]
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
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]