Chaos Corp.のまったりゲーム生活

主に音ゲーやマイクラのことについてのんびり記事を書いていきます。

マインクラフト用の自動バックアップツールを作ってみた!!

どうもこんにちは、fです。
先日、EIEIさんのブログで、EIEIさんのマインクラフトのデータが消えたというのを聞き、(EIEIさんのそのブログはこちら。)
※ちゃんと許可を取っています。
vbsで、起動すると設定したファイルのバックアップを取ったうえでマイクラのランチャーを起動してくれるプログラムを作ってみました。
一応言っておきますが、java版しかできません。
be版はフォルダツリーの構成が分からないので...
アップローダーで配布もしてます↓
minecraft_backup_tool.zip (minecraft_backup_tool.zip) ダウンロード | ChaosCorp's Programs Uploader | uploader.jp
~~仕組み解説~~
以下からプログラムのソースコードです。

Option Explicit
Dim username,backup,fso,file,tree,objWsh,objNet
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
Set objNet=CreateObject("WScript.Network")
username=objNet.Username
tree="C:\Users\"&username&"\AppData\Roaming\.minecraft\saves\"
Set file=fso.OpenTextFile(".\files_to_backup.txt", 1 )
Do While file.AtEndOfLine = false
backup=file.ReadLine
fso.CopyFolder tree&backup,".\backups\",True
Loop
Set objWsh = CreateObject("WScript.Shell")
objWsh.Run """C:\Program Files (x86)\Minecraft\MinecraftLauncher.exe"""

意外と少ない行数でいけました。
役割↓
1行目...コードを的確に記述するためのやつ
2行目...変数の宣言
3行目...ファイルシステムオブジェクトの生成
4,5行目...パソコンのユーザー名検出
6行目...マイクラのセーブデータがあるファイルの絶対パスを取得
7行目...files_to_backup.txt(バックアップするフォルダ)を読み込み
8~11行目...files_to_backupで指定されたフォルダを全てbackupsにコピー(backupsにファイルが既にあった場合上書き保存する)
12,13行目...マイクラのランチャーを起動

という感じです。
使う前の準備は、フォルダ内の「files_to_backup」に、バックアップを取りたいフォルダ名を全て記述(フォルダ名ごとに改行してください)するだけです。
あとは、フォルダ内の「play&backup」をダブルクリックで起動すると、マインクラフトランチャーが開き、指定したフォルダのバックアップがフォルダ内の「backups」フォルダに格納されます。
つまり、マイクラをプレイする時に「play&backup」からランチャーを起動すればバックアップがとられるということです。
savesフォルダを丸ごとコピーする案もありましたが、容量を食いそうなのでバックアップするフォルダを指定する形にしました。
これがあれば、マグマダイブしてもバックアップを読み込んで元通りにすることだってできます。(まあ私は個人的にそんなことはしませんが。私はレッドストーン装置に間違って水を流してしまった時などに使う予定です。)
それでは。


8/16 追記
アップローダーのzipファイル、解凍したらfiles_to_backup.txtの文字コードUTF-8になってしまっていると思います。
それではvbsでは文字化けしてしまって日本語を読み取ることができません。
文字コードANSIにして保存してください。すみません。
どうやら、ANSIに設定した状態で1文字も記入がないtxtファイルを上書き保存するとUTF-8になってしまう(?)かもしれないです。
バックアップしたいワールド名を書き、名前を付けて保存→文字コードANSIに設定してください。UTF-8の方は消してください。
すみません...

にほんブログ村 ゲームブログ Minecraftへ
にほんブログ村