タイトルはそのうち決める

艦これのおぼえがきとか実験装置とかLaTexのメモとか。

Primitierのセーブデータをバックアップするバッチファイル

Steamで早期アクセスになっているPrimitier用。
特定フォルダにあるセーブデータを、タイムスタンプをヘッダにしてコピーする。

使って予期せぬ振る舞いをしても責任はとれないのであしからず。

 

以下をPrimitierSaveDataBackup.batとして保存。

@echo off
cd %userprofile%\Documents\Primitier\Saves
echo start backup
for %%i in (save?.dat) do (call :BU %%i)
pause
exit /b

:BU %1
for /F %%j in ("%1") do (set TS=%%~tj)
set TS=%TS: =%
set TS=%TS:/=%
set TS=%TS::=%
set FN=%TS%_%1

if exist %FN% (
 echo %FN% exists, skipped
) else (
 echo copy %1 as %FN%
 copy %1 %FN%
)

exit /b

 

実行すると、save1.dat~save8.datについてバックアップする。
「202205080927_save1.dat」みたいな感じ。
言語設定によってヘッダーの内容が変わるかもなので注意が必要。

あと、秒は入っていないとおもうので、超短期間にはバックアップしてくれない。

 

以下はメモ。

 

cd %userprofile%\Documents\Primitier\Saves

%userprofile% でログインしているユーザーのフォルダにPATHが通っているはず。

 

for %%i in (save?.dat) do (call :BU %%i)

遅延変数展開のせいでsetができないので、サブルーチンにしてしまう。
こうすると変数がすぐに更新される。

 

for /F %%j in ("%1") do (set TS=%%~tj)

%~tj でタイムスタンプ文字列

ファイル名を与えるところは""で挟まないとちゃんと動かない。
気づくのに結構かかった