Instantly share code, notes, and snippets.

Embed
What would you like to do?
起動時、終了時にバックアップを取ってくれるスティーブ
@echo off
title BackUpRun
call :CHECK_SERVER
call :OUTPUT
call %CONFIG%
call :CHECK_RUN
call :CHECK_SERVER_PROPERTIES
call :CHECK_CONFIG_START
call :STEVE_SAY サーバーを起動するぞ
title MinecraftServer -BackUpRun
call :RUN
title BackUpRun
call :CHECK_CONFIG_END
call :STEVE_SAY おつかれさま Enterキーを押せば終了するぞ
pause>nul
exit
:CHECK_SERVER
if not exist "server.properties" (
call :STEVE_SAY server.propertiesが見つかりませんでした 本バッチファイルはserver.propertiesと 同じ場所に置いて下さい
echo (Enterキーを押して終了します)
pause>nul
exit
)
exit /b 0
:CHECK_RUN
if '%RUN_bat%'=='' (
call :STEVE_SAY 申し訳ないが サーバー起動用のバッチファイルが見つからなかったよ BackUpRun_Config.batを編集しておくれ
echo (Enterキーを押して終了します)
pause>nul
exit
)
if not exist %RUN_bat% (
call :STEVE_SAY 申し訳ないが サーバー起動用のバッチファイルが見つからなかったよ BackUpRun_Config.batを編集しておくれ
echo (Enterキーを押して終了します)
pause>nul
exit
)
:CHECK_SERVER_PROPERTIES
if exist "server.properties" (
call :GET_LEVELNAME_SETTING
call :GET_LEVELNAME
call :CHECK_ANOTHER_WORLD
) else (
call :STEVE_SAY 申し訳ないが server.propertiesが見つからなかったよ 普通に起動するぞ
goto RUN
)
exit /b 0
:GET_LEVELNAME_SETTING
for /f %%X in ('findstr /c:level-name server.properties') do set LEVEL_NAME_SET=%%X
exit /b 0
:GET_LEVELNAME
for /f "tokens=2" %%X in ('echo %LEVEL_NAME_SET%') do set LEVEL_NAME=%%X
exit /b 0
:CHECK_CONFIG_START
if not '%CreateBackup_onStart%'=='' (
if '%CreateBackup_onStart%'=='true' (
call :SET_DATE
call :BACKUPS
) else (
exit /b 0
)
) else (
call :CHECK_START
)
exit /b 0
:CHECK_ANOTHER_WORLD
set LEVEL_NETHER=
if exist "%LEVEL_NAME%_nether" set LEVEL_NETHER=%LEVEL_NAME%_nether
set LEVEL_END=
if exist "%LEVEL_NAME%_the_end" set LEVEL_END=%LEVEL_NAME%_the_end
exit /b 0
:CHECK_START
call :STEVE_SAY 起動前にワールドをバックアップするか? y:作成する n:作成しない
set /p FLAG_START="> "
if ""%FLAG_START%""==""y"" (
call :SET_DATE
call :BACKUPS
) else if ""%FLAG_START%""==""n"" (
exit /b 0
) else (
call :STEVE_SAY ???
call :CHECK_START
)
exit /b 0
:CHECK_CONFIG_END
if not '%CreateBackup_onEnd%'=='' (
if '%CreateBackup_onEnd%'=='true' (
call :SET_DATE
call :BACKUPS
) else (
exit /b 0
)
) else (
call :CHECK_END
)
exit /b 0
:CHECK_END
call :STEVE_SAY 終わる前にワールドをバックアップするか? y:作成する n:作成しない
set /p FLAG_END="> "
if ""%FLAG_END%""==""y"" (
call :SET_DATE
call :BACKUPS
) else if ""%FLAG_END%""==""n"" (
exit /b 0
) else (
call :STEVE_SAY ???
call :CHECK_END
)
exit /b 0
:SET_DATE
set time2=%time: =0%
set DAY=%date:~-10,4%-%date:~-5,2%-%date:~-2,2%_%time2:~0,2%.%time2:~3,2%.%time2:~6,2%
exit /b 0
:BACKUPS
call :STEVE_SAY バックアップをクラフトするぞ
call :BACKUP %LEVEL_NAME%
if not '%LEVEL_NETHER%'=='' call :BACKUP %LEVEL_NETHER%
if not '%LEVEL_END%'=='' call :BACKUP %LEVEL_END%
call :STEVE_SAY 終了だ [Backup\%DAY%]
exit /b 0
:BACKUP
if not exist "Backup" mkdir Backup
echo D | xcopy /s %1 "Backup\%DAY%\%1%"
exit /b 0
:RUN
call %RUN_bat%
exit /b 0
:STEVE_SAY
rem   ┌─────┐
rem   │┌────┤
rem   ├┘rェュ rェュ│スティーブが喋るよ
rem   │  _l二l_ │
rem ..┌┴─┴──┴┴┐
rem ..│ │    │ │
rem ..├─┤    ├ ┤
echo.
if not '%1%'=='' (
if not '%2%'=='' (
if not '%3%'=='' (
echo   ┌─────┐
echo   │┌────┤ %1
echo   ├┘rェュ rェュ│ %2
echo   │  _l二l_ │ %3
) else (
echo   ┌─────┐
echo   │┌────┤
echo   ├┘rェュ rェュ│ %1
echo   │  _l二l_ │ %2
)
) else (
echo   ┌─────┐
echo   │┌────┤
echo   ├┘rェュ rェュ│ %1
echo   │  _l二l_ │
)
) else (
echo   ┌─────┐
echo   │┌────┤
echo   ├┘rェュ rェュ│
echo   │  _l二l_ │
)
echo ..┌┴─┴──┴┴┐
echo ..│ │    │ │
echo ..├─┤    ├ ┤
exit /b 0
:OUTPUT
set CONFIG=BackUpRun_Config.bat
if not exist %CONFIG% call :HELLO
if not exist %CONFIG% (
title BackUpRun
echo @echo off>> %CONFIG%
echo rem バッチ起動時のバックアップ>> %CONFIG%
echo rem true=確認なしでバックアップをとる>> %CONFIG%
echo rem false(もしくはtrue以外の文字)=確認なしでバックアップはとらない>> %CONFIG%
echo rem (空白)=毎回確認>> %CONFIG%
echo.>> %CONFIG%
echo set CreateBackup_onStart=%COF_S%>> %CONFIG%
echo.>> %CONFIG%
echo.>> %CONFIG%
echo rem サーバー停止時のバックアップ >> %CONFIG%
echo rem true=確認なしでバックアップをとる>> %CONFIG%
echo rem false(もしくはtrue以外の文字)=確認なしでバックアップはとらない>> %CONFIG%
echo rem (空白)=毎回確認>> %CONFIG%
echo.>> %CONFIG%
echo set CreateBackup_onEnd=%COF_E%>> %CONFIG%
echo.>> %CONFIG%
echo.>> %CONFIG%
echo rem サーバー起動のバッチファイル名>> %CONFIG%
echo rem 半角スペースや一部特定の文字が含まれていると適応されないのでご注意ください>> %CONFIG%
echo.>> %CONFIG%
echo set RUN_bat=%COF_B%>> %CONFIG%
)
exit /b 0
:HELLO
title BackUpRun 初期設定
call :STEVE_SAY ようこそBackUpRunへ、 案内役のスティーブです。
echo (Enterキーで次へ)
pause>nul
cls
call :STEVE_SAY ここではBackUpRunの初期設定を行います。 もちろん設定は後から%CONFIG%で変更出来ます。
echo (Enterキーで次へ)
pause>nul
cls
call :STEVE_SAY まずは起動時にバックアップを行うか設定してください。 trueで有効、falseで無効、未入力なら毎回確認を行います。 (文字を入力してEnterで決定)
set /p COF_S="> "
cls
call :STEVE_SAY 次に終了前にバックアップを行うか設定してください。 trueで有効、falseで無効、未入力なら毎回確認を行います。 (文字を入力してEnterで決定)
set /p COF_E="> "
cls
call :STEVE_SAY 最後に現在使用しているサーバー起動用の バッチファイルを指定してください。(例:RUN.bat (文字を入力してEnterで決定)
set /p COF_B="> "
cls
call :STEVE_SAY 設定は以上です。 この設定は%CONFIG%が無い時だけ現れるので、 また会いたい方は%CONFIG%を消してみましょう。
echo (BackUpRunを通常起動する)
pause>nul
cls
exit /b 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment