Moin Leute,
ich habe mich mal heute etwas intensiver mit Batch befasst und ein Script zusammengebastelt, das per Knopfdruck den World-Ordner (oder alle 3 bei Bukkit) separat abspeichert, und zwar getrennt nach Datum und Uhrzeit. Ich hoffe, es ist für Euch eine Hilfe, ich habe es unter Win7 Home Premium getestet und für funktionierend befunden. Ebenso wurde es bereits auf dem SNF-eigenen Server ausprobiert und funktioniert tadellos.
Es wird die server.properties ausgelesen, um den Namen der World festzustellen, damit die Verzeichnisse entsprechend erfasst und kopiert werden können. Wichtig hierbei ist nur, dass der Eintrag des World-Namens in Zeile 4 Stehen muss, andernfalls ist wie im Code beschrieben der Eintrag zu ändern.
Der Rest geschieht völlig automatisch. Es wird ein Verzeichnis namens "BACKUP" erstellt, in welches erst nach Datum getrennt wird und während des selben Tages als Unterverzeichnis nach der Uhrzeit.
ich habe mich mal heute etwas intensiver mit Batch befasst und ein Script zusammengebastelt, das per Knopfdruck den World-Ordner (oder alle 3 bei Bukkit) separat abspeichert, und zwar getrennt nach Datum und Uhrzeit. Ich hoffe, es ist für Euch eine Hilfe, ich habe es unter Win7 Home Premium getestet und für funktionierend befunden. Ebenso wurde es bereits auf dem SNF-eigenen Server ausprobiert und funktioniert tadellos.
verborgener Text:
Code:
@echo off
rem ----- Zeile 4 aus server.properties auslesen -----
rem - Es muss in Zeile 4 der Eintrag des Weltnamens vorliegen, ansonsten "skip" anpassen!
rem - Bei skip=3 werden 3 Zeilen übersprungen, die server.properties wird temporär ohne Zeilen 1-3
rem - abgespeichert. Zeile 1 (Zeile 4 in der Originalversion) wird abgefragt und gespeichert.
rem - Die temporäre Datei wird anschliessend geloescht.
For /F "tokens=* skip=3" %%a IN (server.properties) DO echo %%a>>TEMP.txt
set /p WORLD=<TEMP.txt
del TEMP.txt
rem ----- Eintrag splitten, damit nur Weltname uebrig bleibt -----
rem - aus "level-name=xyz" wird "xyz"
for /f "tokens=2 delims== " %%a in ("%WORLD%") do set WORLD=%%a
rem ----- Uhrzeit ermitteln und Trennzeichen austauschen -----
rem - Uhrzeit wird ohne Milisekunden abgefragt und in 3 Teile geteilt. Diese werden
rem - mit anderen Trennzeichen wieder zusammengefuegt, da Doppelpunkte unzulässig sind!
for /f "tokens=1,2,3 delims=: " %%a in ("%time:~0,8%") do set HH=%%a&set MM=%%b&set SS=%%c
set zeit=%HH%_%MM%_%SS%
rem ----- Backup-Verzeichnisse erstellen -----
rem - Existenz der Weltenverzeichnisse (bei Bukkit alle 3, bei Classic nur der erste) werden
rem - geprueft und Backup-Verzeichnisse erstellt. Unterteilt in Datum\Uhrzeit\Teilwelt
if exist %WORLD% md BACKUP\%DATE%\%zeit%\%WORLD%
if exist %WORLD%_nether md BACKUP\%DATE%\%zeit%\%WORLD%_nether
if exist %WORLD%_the_end md BACKUP\%DATE%\%zeit%\%WORLD%_the_end
rem ----- Welt-Verzeichnisse von Bukkit in Backup-Verzeichnisse kopieren -----
rem - Sofern die Weltenverzeichnisse existieren wird der gesamte Inhalt in
rem - die zuvor erstellten Backup-Verzeichnisse kopiert.
if exist %WORLD% xcopy %WORLD% BACKUP\%DATE%\%zeit%\%WORLD%\ /Y /E /S /Q
if exist %WORLD%_nether xcopy %WORLD%_nether BACKUP\%DATE%\%zeit%\%WORLD%_nether\ /Y /E /S /Q
if exist %WORLD%_the_end xcopy %WORLD%_the_end BACKUP\%DATE%\%zeit%\%WORLD%_the_end\ /Y /E /S /Q
verborgener Text:
Code:
@echo off
title MC-Auto-Backup
:start
rem ----- Zeile 4 aus server.properties auslesen -----
rem - Es muss in Zeile 4 der Eintrag des Weltnamens vorliegen, ansonsten "skip" anpassen!
rem - Bei skip=3 werden 3 Zeilen übersprungen, die server.properties wird temporär ohne Zeilen 1-3
rem - abgespeichert. Zeile 1 (Zeile 4 in der Originalversion) wird abgefragt und gespeichert.
rem - Die temporäre Datei wird anschliessend geloescht.
For /F "tokens=* skip=3" %%a IN (server.properties) DO echo %%a>>TEMP.txt
set /p WORLD=<TEMP.txt
del TEMP.txt
rem ----- Eintrag splitten, damit nur Weltname uebrig bleibt -----
rem - aus "level-name=xyz" wird "xyz"
for /f "tokens=2 delims== " %%a in ("%WORLD%") do set WORLD=%%a
rem ----- Uhrzeit ermitteln und Trennzeichen austauschen -----
rem - Uhrzeit wird ohne Milisekunden abgefragt und in 3 Teile geteilt. Diese werden
rem - mit anderen Trennzeichen wieder zusammengefuegt, da Doppelpunkte unzulässig sind!
for /f "tokens=1,2,3 delims=: " %%a in ("%time:~0,8%") do set HH=%%a&set MM=%%b&set SS=%%c
set zeit=%HH%_%MM%_%SS%
rem ----- Backup-Verzeichnisse erstellen -----
rem - Existenz der Weltenverzeichnisse (bei Bukkit alle 3, bei Classic nur der erste) werden
rem - geprueft und Backup-Verzeichnisse erstellt. Unterteilt in Datum\Uhrzeit\Teilwelt
if exist %WORLD% md BACKUP\%DATE%\%zeit%\%WORLD%
if exist %WORLD%_nether md BACKUP\%DATE%\%zeit%\%WORLD%_nether
if exist %WORLD%_the_end md BACKUP\%DATE%\%zeit%\%WORLD%_the_end
rem ----- Welt-Verzeichnisse von Bukkit in Backup-Verzeichnisse kopieren -----
rem - Sofern die Weltenverzeichnisse existieren wird der gesamte Inhalt in
rem - die zuvor erstellten Backup-Verzeichnisse kopiert.
if exist %WORLD% xcopy %WORLD% BACKUP\%DATE%\%zeit%\%WORLD%\ /Y /E /S /Q
if exist %WORLD%_nether xcopy %WORLD%_nether BACKUP\%DATE%\%zeit%\%WORLD%_nether\ /Y /E /S /Q
if exist %WORLD%_the_end xcopy %WORLD%_the_end BACKUP\%DATE%\%zeit%\%WORLD%_the_end\ /Y /E /S /Q
echo Backup erledigt - %DATE% - %time:~0,8%
echo ---------------------------------------
ping 127.0.0.1 /n 1 /w 86400000 > nul
goto start
Es wird die server.properties ausgelesen, um den Namen der World festzustellen, damit die Verzeichnisse entsprechend erfasst und kopiert werden können. Wichtig hierbei ist nur, dass der Eintrag des World-Namens in Zeile 4 Stehen muss, andernfalls ist wie im Code beschrieben der Eintrag zu ändern.
Der Rest geschieht völlig automatisch. Es wird ein Verzeichnis namens "BACKUP" erstellt, in welches erst nach Datum getrennt wird und während des selben Tages als Unterverzeichnis nach der Uhrzeit.
Zuletzt bearbeitet: