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 am Monatsende ausführen

Frage Entwicklung Batch & Shell

Mitglied: peter620

peter620 (Level 1) - Jetzt verbinden

03.03.2011, aktualisiert 18.10.2012, 8119 Aufrufe, 33 Kommentare

Ich benutze Acronis um Backups von meinem Heimnetzwerk auszuführen. Bisher hatte ich als Tasks ein monatliches FullBackup am letzten Tag jeden Monats und einen Task für inkrementelle Backups jeden Tag.
Vor Durchführung des FullBackups konnte ich im Programm einstellen, dass ein Batch ausgeführt wird. Dieses erstellt mir einen Ordner mit dem Format "ArchivBackup_jjjjmm" und verschiebt dann alle vergangenen Backups in diesen Ordner.
Nach dem Upgrade von Acronis auf die Version 2011 geht dies nicht mehr (und der Support von Acronis ist zum k* schlecht, sorry) , dafür wurde ein ChainBackup eingeführt, welches FullBackup und anschließend inkrementelle in Serie durchführt. Allerdings (und dies ist leider nicht änderbar) nach einem Monat löscht dies die Backups bevor eine neue Chain erstellt wird.

Daher meine Frage:
Wie kann ich meine erwähnte Batchdatei erweitern, dass beim Chainbackup jedes mal vor Ausführung geprüft wird ob gerade der letzte Tag im Monat (oder noch besser, der letzte Freitag des Monats) ist.
Falls ja, so soll das Batch ausgeführt werden - falls nicht zutreffend, soll die unten angeführte Prozess für Ordnererstellung/Dateiverschiebung usw. übersprungen werden.

FOR /F "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDATE=%%c%%b
echo %cdate%
md ArchivBackup_%cdate%
xcopy BackupM_P_Q_T.tib ArchivBackup_%cdate%
move *.tib ArchivBackup_%cdate%
del BackupM_P_Q_T.tib

net use

Bin für jede Hilfe und Tipps dankbar.
33 Antworten
Mitglied: marinux
03.03.2011, aktualisiert 18.10.2012
Hallo,

auch wenn es nicht direkt die Antwort auf Deine Frage ist, aber ich habe ein Tool geschrieben, was wöchentlich das macht, was du willst und auch mit Acronis 2011 funktionieren müsste.

http://www.administrator.de/wissen/%c3%9cbersichtlich-backups-nach-kws- ...

Gruß

Marinux
Bitte warten ..
Mitglied: peter620
03.03.2011 um 11:00 Uhr
Danke, ich sehs mir mal an. Sieht aber auf den ersten Blick aufwändiger aus, als einfach meine batch zu ergänzen - schliesslich müsste die erstelle Serie nur an einem bestimmten Tag in einen anderen Ordner verschoben werden.
Warum Acronis das nicht ins Programm eingebaut, sondern automatisch löscht, hat ist mir echt schleierhaft. Backups hat man schliesslich nicht um sie zu löschen, sondern um sie zu behalten...
Bitte warten ..
Mitglied: miniversum
03.03.2011 um 12:49 Uhr
Mit reinem Batch wirds aufwendig. Aber du könntest eine temponäre vbs datei erstellen lassen (durch die Batch Datei) und darin z.b. einen tag aufaddieren und dann wieder Ausgeben lassen. Diese Ausgabe fängst du mit einer For schleife ab und schaust ob der Tag "1" ist. Wenn ja dann ist heute der letzte Tag des Monats.

Allternativ legst du in der Batch ab welcher Monat wieviel Tage hat udn prüfst das eben mit dem aktuellen Datum ab.
Bitte warten ..
Mitglied: peter620
03.03.2011 um 12:54 Uhr
Könnte das Ganze vereinfacht werden, wenn ich das immer an einem festen Tag mache, also zum Beispiel immer der erste jeden Monats?
Bitte warten ..
Mitglied: Biber
03.03.2011 um 12:59 Uhr
Moin miniversum,

Zitat von miniversum:
Mit reinem Batch wirds aufwendig.
na ja, das kommt auf die Strategie an.

Wenn der "Algorithmus" wirklich so einfach ist wie oben beschrieben, dann wäre doch der einmalige Aufwand bestenfalls

  • einmalig pro Jahr von irgendeinem Schlecker-Reklamekalender alle "letzten Freitage" dieses Jahres abtippen als 12 Zeilen Text
  • diese Textdatei in dem obigen Batch gegen das aktuelle Datum verglichen mit "FindStr" oder "Find".

Und wenn denn das heutige Datum gleich einem der 12 "letzten Freitage" des Jahres ist --> siehe oben.

Hätte den Vorteil, dass du selbst den "letzten Freitag" ggf auf einen anderen Tag festlegen kannst,
z.B. den letzten Freitag im Dezember auf den 19.12. vorverlegen.

Grüße
Biber
Bitte warten ..
Mitglied: peter620
03.03.2011 um 13:19 Uhr
Eben, wie schon erwähnt: wa¨re es nicht einfacher immer am 27. eines Monats dies ausführen zu lassen (jeder Monat hat 27 Tage).

Wie müsste mein Batch ergänzt werden? (Bin leider nicht so gut auf dem Feld...).
Bitte warten ..
Mitglied: pieh-ejdsch
03.03.2011 um 13:36 Uhr
moin,

so schwer ist das in Batch nun auch wieder nicht.
01.
:: ----schnipp--- Letzten Freitag im Monat.cmd 
02.
@echo off&setlocal 
03.
for /f "tokens=2-4 delims=(-)" %%i in ('echo.^|date^|more +1') do for /f "tokens=1-3 delims=MoDiMFrSa.,:- " %%l in ('echo exit^|cmd /q /k"prompt $D"') do set "%%i=%%l" & set "%%j=%%m" & set "%%k=%%n" 
04.
echo "%JJ%"|findstr "[0-9][0-9][0-9][0-9]" >nul || set "JJ=20%JJ%" 
05.
set /a TT=100%TT%%%100,MM=100%MM%%%100 
06.
set /a z=14-MM,z/=12,y=JJ+4800-z,m=MM+12*z-3,dow=153*m+2 
07.
set /a dow=dow/5+TT+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1 
08.
 
09.
:: 5 steht für Freitag, 0 für Montag, 7für Sonntag 
10.
if not %dow% equ 5 goto :eof 
11.
 
12.
set /a "Februar = 22 + ( JJ / 4- ( JJ - 1 ) / 4  - ( JJ / 100 - ( JJ - 1 ) / 100) + ( JJ / 400 - ( JJ - 1 ) / 400 ) )"  
13.
if %MM% equ 2 if %TT% geq %Februar% goto :machweiter 
14.
set "OK=" 
15.
for %%i in (1 3 5 7 8 10 12) do if %%i equ %MM% if %TT% geq 25 set "OK=1" 
16.
for %%i in (4 6 9 11) do if %%i equ %MM% if %TT% geq 24 set "OK=1" 
17.
if not defined OK goto :eof 
18.
:machweiter 
19.
 
20.
:: hier kommt das auszuführende für den Letzten Freitag im Monat 
21.
echo letzter Freitag im Monat --- weiter gehts 
22.
pause 
23.
:: ----schnapp--- Letzten Freitag im Monat.cmd
Gruß Phil
Bitte warten ..
Mitglied: miniversum
03.03.2011 um 13:47 Uhr
Und jeder erste des Monate wäre einfach:
if "%date:~0,2%" equ "01" echo erster
Ist aber abhängig vom eingestellten Datumsformat, bzw. der Reihenfolge
Bitte warten ..
Mitglied: peter620
03.03.2011 um 14:40 Uhr
Habs ausprobiert, aber da bekomme ich einen Syntaxfehler. Irgendwo scheint der Wurm drin zu sein.

Liegt das daran, dass delims=MoDiMFrSa. ist? Fehlt z.B. der Do
Bitte warten ..
Mitglied: pieh-ejdsch
03.03.2011 um 14:55 Uhr
Bei mir gehts.

stell mal auf "echo on" und führe die Batch in einem offenen CMD Fenster auf
Bitte warten ..
Mitglied: peter620
03.03.2011 um 15:47 Uhr
Beim ausführen erhalte ich im cmd-Fenster (nicht über dd.mm.åå wundern, das OS hat eine andere Sprache)
01.
set "dd.mm.åå=%1"   & set " =03"   & set "2011"
zweimal einen Syntaxfehler; danach gehts mit folgendem normal weiter:
01.
echo "20"  | findstr "[0-9][0-9][0-9][0-9]"   1>nul  || set "JJ=2020"
usw.

Der Rest scheint zu funktionieren.
Bitte warten ..
Mitglied: pieh-ejdsch
03.03.2011 um 16:15 Uhr
dann nimmst Du am besten die GetAllDateTimeInfos.bat zur hilfe.
Workshop Batch for Runaways - Part III - Datums- und Zeitvariablen im Batch
ungefähr ein achtel runtescrollen und bei diesem Text ist diese zu holen
The Final Version 0.01 Beta -->Now Version 0.10 23.10.2008

dann ersetzt Du in dem oberen Script die Zeilen 03 und 04 mit dieser hier:
01.
GetAllDateTimeInfos /q /s
das sollte dann genügen.

Gruß Phil
Bitte warten ..
Mitglied: peter620
04.03.2011 um 09:39 Uhr
Wow, danke Phil für deine tolle Unterstützung. "Letzten Freitag im Monat.cmd" läuft jetzt.

Allerdings bekomme ich 3 Syntaxfehler im GetAllDateTimeInfos.bat

Im cmd
Zeile 21: set "=2011"
Zeile 29: set " =03"
Zeile 30: set "=2011"
Bitte warten ..
Mitglied: pieh-ejdsch
04.03.2011 um 10:40 Uhr
moin peter620,

aber so 50% sind noch keine 100%

Deine Systemsprache/Datumsformateinstellungen ist/sind warscheinlich so eingestellt, dass die GetAllDateTimeInfos.bat auch nicht das gewünschte Ergebnis bringt.

es ist ja noch ein bissel Zeit bis zum Monatsende, bis dahin biegen wir das noch hin.

Feuere mal folgende Zeile im CMD-Fenster ab und gib den Inhalt der Txt hiern als Ergebnis aus.
01.
(echo.|date&echo.---&echo.%date%)>"%userprofile%\desktop\DateInfo.txt"&&"%userprofile%\Desktop\Dateinfo.txt"
Gruß Phil
Bitte warten ..
Mitglied: Biber
04.03.2011 um 10:42 Uhr
Moin peter620,

Allerdings bekomme ich 3 Syntaxfehler im GetAllDateTimeInfos.bat

Dann teste bitte die GetAllDatTimeInfos.cmd mal trocken vom CMD-Prompt aus (einfach ohne Parameter) und poste die Ausgabe.

Und poste bitte auch mal die Ausgabe von
echo %date% %time%
am CMD-Prompt.

Grüße
Biber
Bitte warten ..
Mitglied: peter620
04.03.2011 um 12:15 Uhr
@ Phil:
Eingabe von (echo.|date&echo.---&echo.%date%) ergibt (übersetzt natürlich, auf deutsch wahrscheinlich leicht abweichend - aber ihr versteht sicher was gemeint ist ;) )
01.
Gültiges Datum ist: 04.03.2011 
02.
Neues Datum angeben: (dd.mm.yy) 
03.
--- 
04.
04.03.2011
@Biber
Die 3 oben beschriebenen Syntaxfehler tauchen auf wenn ich nur GetAllDateTimeInfos.bat ausführe (ohne letzten Freitag im Monat.cmd)

echo %date% %time% ergibt
01.
04.03.2011 12:08:22,69
Bitte warten ..
Mitglied: pieh-ejdsch
04.03.2011 um 12:24 Uhr
ist die Zeile 02 nun exakt so aus der "DateInfo.txt" entnommen oder hast Du die hier Verändert reingestellt?

Verfälschte Angaben führen zu Inkorrekten Ergebnissen.
Bitte warten ..
Mitglied: peter620
04.03.2011 um 12:33 Uhr
Sorry, jetzt hab ich nicht mitgedacht (mein Kleiner hat mich die ganze Nacht wach gehalten...).
Wortwörtlich ist die CMD-Ausgabe:
01.
Gjeldende dato er: 04.03.2011 
02.
Skriv ny dato: (dd.mm.åå) 
03.
--- 
04.
04.03.2011
Bitte warten ..
Mitglied: bastla
04.03.2011 um 12:34 Uhr
@miniversum
Bis zu
Mit reinem Batch wirds aufwendig. Aber du könntest eine temponäre vbs datei erstellen lassen (durch die Batch Datei)
ginge ich ja noch konform , aber dann würde ich vielleicht doch eher zu folgendem Inhalt der VBS-Datei tendieren:
01.
Set a=WScript.Arguments:Heute=DateValue(a(0)):WoTag=a(1):Letzter=DateSerial(Year(Heute)-(Month(Heute)=12),Month(Heute) Mod 12+1,1)-1 
02.
WScript.Echo FormatDateTime(Letzter),FormatDateTime(Letzter-(Weekday(Letzter)+7-WoTag) Mod 7)
Bei Aufruf des Scripts mit Übergabe des zu untersuchenden Datums und des gesuchten Wochentages (So=1, ..., Sa=7) werden letzter Tag des Monats und letzter Tag des Monats, der auf den gesuchten Wochentag fällt, zurückgegeben ...

Grüße
bastla
Bitte warten ..
Mitglied: pieh-ejdsch
04.03.2011 um 12:56 Uhr
so hier ist der Norske Batch

01.
:: ----schnipp--- Siste fredag i måneden.cmd 
02.
@echo off&setlocal 
03.
 
04.
for /f "tokens=2-4 delims=(-.)" %%i in ('echo.^|date^|more +1') do for /f "tokens=1-3 delims=." %%l in ("%date%") do set "%%i=%%l" & set "%%j=%%m" & set "%%k=%%n" 
05.
echo "%åå%"|findstr "[0-9][0-9][0-9][0-9]" >nul || set "åå=20%åå%" 
06.
set /a dd=100%dd%%%100,mm=100%mm%%%100 
07.
set /a z=14-mm,z/=12,y=åå+4800-z,m=mm+12*z-3,dow=153*m+2 
08.
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1 
09.
 
10.
:: 5 steht für Freitag, 0 für Montag, 7 für Sonntag 
11.
if not %dow% equ 5 goto :Keinletzter 
12.
 
13.
set /a "Februar = 22 + ( åå / 4- ( åå - 1 ) / 4  - ( åå / 100 - ( åå - 1 ) / 100) + ( åå / 400 - ( åå - 1 ) / 400 ) )"  
14.
if %mm% equ 2 if %dd% geq %Februar% goto :machweiter 
15.
set "OK=" 
16.
for %%i in (1 3 5 7 8 10 12) do if %%i equ %mm% if %dd% geq 25 set "OK=1" 
17.
for %%i in (2 4 6 9 11) do if %%i equ %mm% if %dd% geq 24 set "OK=1" 
18.
if not defined OK goto :keinletzter 
19.
:machweiter 
20.
 
21.
:: hier kommt das auszuführende für den Letzten Freitag im Monat 
22.
echo Sist fredag 
23.
pause 
24.
 
25.
goto :eof 
26.
:keinletzter 
27.
 
28.
:: hier kommt das was sonst ausgefuert wird hin 
29.
echo Ingen Sist fredag 
30.
 
31.
pause 
32.
goto :eof 
33.
 
34.
:: ----schnapp--- Siste fredag i måneden.cmd
[Edit] ein t gesponsort [/Edit]
Gruß Phil
Bitte warten ..
Mitglied: peter620
04.03.2011 um 13:20 Uhr
SUPER! DANKE!
Nur ein kleiner Fehler in Zeile 11 musste ausgemerzt werden

if not %dow% equ 5 goto :Keinletzter

Ich geb dir dann am 25.3. Bescheid um das Ganze auch wirklich in der Praxis funktioniert hat
Bitte warten ..
Mitglied: pieh-ejdsch
04.03.2011 um 13:33 Uhr
Ich geb dir dann am 25.3. Bescheid um das Ganze auch wirklich in der Praxis funktioniert hat

das kannst Du (wenn Du willst) auch jetzt schon Testen.

Schließe alle Deine Programme wie Mail, Browser etc. - auf jedenfall diese, welche die Korrekte Zeit benutzten.
Öffnest Die CMD-Line fürs testen und machstn Test
Dann änderst Du das Datum unten in der Taskleiste oder in der Systemsteuerung und machst in der CMD-Line den Test weiter.

zum Schluss stellst Du das Datum wieder auf das Richtige.

Gruß Phil
Bitte warten ..
Mitglied: peter620
04.03.2011 um 13:47 Uhr
Hmm
Hab das Datum auf den letzten Freitag im März eingestellt, also den 25.3. Im cmd sieht das so aus:
for /F "tokens=1-3 delims=." %1 in ("25.03.2011") do set "dd=%1" & set "mm=%m & set "åå=%n"

Trotzdem endet das Ganze dann mit
Ingen Siste fredag
pause
goto :eof
Bitte warten ..
Mitglied: pieh-ejdsch
04.03.2011 um 14:00 Uhr
ja jetzt ist mir auch klar woher das %1 in set "dd=%1" herkommt.

aber warum wird aus dem Kleinen L eine 1
liegt das am Norwegischen Alphabet?

Probiere mal statt der Zeile 04 diese Zeile
01.
for /f "tokens=2-4 delims=(-.)" %%A in ('echo.^|date^|more +1') do for /f "tokens=1-3 delims=." %%D in ("%date%") do set "%%A=%%D" & set "%%B=%%E" & set "%%C=%%F"
[Edit]
falls das auch nicht Fruchtet gehen wir wieder auf die Herkömmlichen Methoden zurück.
dabei ersetzt Du Zeile 04 bis einschliesslich Zeile 06 mit dieser Zeile:
01.
set /a dd=100%date:~-10,2%%%100,mm=100%date:~-7,2%%%100,åå=%date:~-4%
[/Edit]


Gruß Phil
Bitte warten ..
Mitglied: peter620
04.03.2011 um 15:51 Uhr
YESYESYES! 1000 Dank. Wohin darf ich dir die Blumen schicken?
Das mit dem kleinen L und der 1 war ein Schreibfehler (hab diese eine Zeile nur abgetippt). Dein erster Vorschlag für die Zeile 04 hat nicht funktioniert, aber der 2. Vorschlag für die Zeilen 04-06! Der funktionierende Code sieht also wie folgt aus:

01.
:: ----schnipp--- Siste fredag i måneden.cmd 
02.
@echo off&setlocal 
03.
 
04.
set /a dd=100%date:~-10,2%%%100,mm=100%date:~-7,2%%%100,åå=%date:~-4% 
05.
set /a z=14-mm,z/=12,y=åå+4800-z,m=mm+12*z-3,dow=153*m+2 
06.
set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1 
07.
 
08.
:: 5 steht für Freitag, 0 für Montag, 7 für Sonntag 
09.
if not %dow% equ 5 goto :Keinletzter 
10.
 
11.
set /a "Februar = 22 + ( åå / 4- ( åå - 1 ) / 4  - ( åå / 100 - ( åå - 1 ) / 100) + ( åå / 400 - ( åå - 1 ) / 400 ) )"  
12.
if %mm% equ 2 if %dd% geq %Februar% goto :machweiter 
13.
set "OK=" 
14.
for %%i in (1 3 5 7 8 10 12) do if %%i equ %mm% if %dd% geq 25 set "OK=1" 
15.
for %%i in (2 4 6 9 11) do if %%i equ %mm% if %dd% geq 24 set "OK=1" 
16.
if not defined OK goto :keinletzter 
17.
:machweiter 
18.
 
19.
:: hier kommt das auszuführende für den Letzten Freitag im Monat 
20.
echo Sist fredag 
21.
pause 
22.
 
23.
goto :eof 
24.
:keinletzter 
25.
 
26.
:: hier kommt das was sonst ausgefuert wird hin 
27.
echo Ingen Sist fredag 
28.
 
29.
pause 
30.
goto :eof 
31.
 
32.
:: ----schnapp--- Siste fredag i måneden.cmd
Bitte warten ..
Mitglied: pieh-ejdsch
04.03.2011 um 16:09 Uhr
siehst Du - Schreibfehler passiert mir auch andauernd.

ach ja die Blumen - ins Dreiländereck "Deutschland-Tschechei-Polen" - aber bitte auf die deutsche Seite. Danke

Gruß Phil
Bitte warten ..
Mitglied: pieh-ejdsch
31.03.2011 um 19:19 Uhr
moin peter,

ich geb Dir mal die Antwort der Nachricht hierein.
für den Vormonatsordner zum Monatsanfang wäre das eventuell passend
01.
@echo off&setlocal 
02.
 
03.
set /a dd=100%date:~-10,2%%%100,mm=100%date:~-7,2%%%100,åå=%date:~-4% 
04.
set /a Month=(mm+11)%%12 
05.
set /a X=1/Month >nul 2>nul||set /a åå-=1 , Month=12 
06.
if %Month% lss 10 set "Month=0%Month% 
07.
set "cDate=%åå%%Month%" 
08.
 
09.
if %åå% equ %date:~-4% goto :NoYearBackup 
10.
if not exist "ArkivBackup_%åå%" goto :NoYearBackup 
11.
echo JahresBackupsicherung .... 
12.
md "ArkivBackup_%åå%" 
13.
for /d %%i in ("ArkivBackup_%åå%??") do move "%%i" "ArkivBackup_%åå%\"  
14.
echo JahresBackupsicherung fertig 
15.
 
16.
:NoYearBackup 
17.
if not exist "ArkivBackup_%cdate%" goto :machs 
18.
 
19.
echo nothing to do 
20.
goto :eof 
21.
 
22.
:machs 
23.
echo made a Folder 
24.
md ArkivBackup_%cdate% 
25.
move *.tib ArkivBackup_%cdate%
[Edit] yae yes ... Year ausgebessert [/Edit]

[Edit2] Year->åå Fehler entfernt und Jahressicherung eingebaut.[\Edit]


Gruß Phil
Bitte warten ..
Mitglied: peter620
01.04.2011 um 10:21 Uhr
Danke. In Zeile 5 ist ein Buchstabendreher im Wort "Year".
Es funktioniert, nur der Monat wird nur noch mit einer Ziffer ausgegeben, nicht mehr mit 2. Ich hätte also gerne "ArkivBackup_03" anstatt "ArkivBackup_3".

Wird das Batch eigentlich nur am 1. jeden Monats ausgeführt? Wo wird das denn bestimmt?
Bitte warten ..
Mitglied: pieh-ejdsch
01.04.2011 um 13:56 Uhr
moin peter,

für die fehlende "0" fügst Du diese Zeile nach der Zeile 05 ein:
01.
if %Month% lss 10 set "Month=0%Month%
wenn Du das Jahr im Ordnernamen weglässt - wer sorgt dann dafür das alte Backups Verschwinden?
sonst brauchst Du eine OrdnerÜberprüfung auf das ErstellungsDatum - womit wir gleich bei Deiner zweiten Frage sind....
Wird das Batch eigentlich nur am 1. jeden Monats ausgeführt? Wo wird das denn bestimmt?
eben in Zeile 08, aber wenn das Jahr fehlt und die alten Ordner vom VorJahr auch noch Vorhanden sind wird es nicht funktionieren.

es wird nicht Überprüft ob der 1. vom Monat ist. Stattdessen wird nur auf das vorhandensein des Ordners vom Vormonat geprüft - ist dieser noch nicht vorhanden ist folglich der 1. des Monats (oder das erste mal im Monat wo die Kiste an ist und die Batch ertmal überprüft)
wenn Du die Batch dennoch nur an einem 1. Ausführen willst- nimm das statt Zeile 08:
01.
if %dd% equ 1 goto :machs
was natürlich Vorraussetzt, dass die Kiste wirklich jeden erten im Monat an ist.


Gruß Phil
Bitte warten ..
Mitglied: peter620
01.04.2011 um 14:46 Uhr
Super, danke.

Die Kiste ist immer an und gegen Ende jedes Jahres verschiebe ich die Monatsordner in einen Jahresordner. Dies verbinde ich immer mit einem "Aufräumen", d.h. alte inkrementelle Backups werden gelöscht, mir reichen dann die monatlichen Hauptbackups. Darum habe ich nicht daran gedacht dies zu automatisieren.

Dementsprechend hast du recht: es reicht zu testen ob der Vormonatsordner bereits erstellt wurde.
Danke, jetzt funktioniert es wirklich wie es soll

EDIT:
Ha, Irrtum. Meine Ordner hatten bisher immer das Format ArkivBackup_201104 - also ArkivBackup_ååååmm. Das batch gibt aber für cdate nur "mm" aus.
Bitte warten ..
Mitglied: pieh-ejdsch
01.04.2011 um 18:41 Uhr
oben steht alles nachgetragen in der Batch + Jahressicherung Batch am ---> äähhmm Monatsanfang fürn Vormonat ausführen

Gruß Phil
Bitte warten ..
Mitglied: peter620
04.04.2011 um 09:06 Uhr
Hmm, bin mir nicht sicher ob ich jetzt missverstanden wurde. Ich mache jeden Monat einen Ordner im Format ååååmm (also yyyymm auf englisch).

Jahresbackup an sich mache ich nicht. Das letzte volle Backup des Jahres erkläre ich automatisch zum Jahresbackup.
Bitte warten ..
Mitglied: pieh-ejdsch
04.04.2011 um 12:12 Uhr
moin peter,

die Variable åå sorgt in dem Fall für eine Fehlinterpretation des Datumformates - wobei man annimmt dieses Format wäre das Jahr zweistellig.
in Zeile 03. wird das Jahr aber eindeutig aus den letzten vier Zeichen aus der Variable "Datum" in die neue Variable eingetragen
01.
set /a ( ... ) åå=%date:~-4%
Die Kiste ist immer an und gegen Ende jedes Jahres verschiebe ich die Monatsordner in einen Jahresordner.
das Erledigt dir Zeile 09. bis Zeile 16. ( aber erst im neuen Jahr, wenn dieser JahresOrdner noch nicht erstellt wurde)

Zitat von peter620:
Jahresbackup an sich mache ich nicht. Das letzte volle Backup des Jahres erkläre ich automatisch zum Jahresbackup.
sprich Du schiebst Dezember auch gleich in den Jahres Ordner -> dann ist es eventuell besser Zeile 09. bis Zeile 16. an das ende Der Batch zu setzen., damit der Dezember nicht auf der Platte vergammelt.

Gruß Phil
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Server
Batch Script bei Start ausführen (3)

Frage von KEFHVDI zum Thema Windows Server ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...