FF14の例のブログの『あとがき』

FF14の4周年記念14時間生放送の座談会に招待された(い)ブログの『あとがき』です。

【FF14】バッチ処理でメインキャラクターの各種設定をサブキャラクターに一括コピーする方法

バッチ処理でメインキャラクターの各種設定をサブキャラクターに一括コピーする方法

こんにちはこんばんわ、らりーです。

大変私事で恐縮ですが、このたびパソコンを買い替えてウルトラワイドモニターを導入しました!

さいきんは、日々各種設定の微調整をしています。

しかし、ふつうのモニターからウルトラワイドモニターに変えたので、すべての設定をすべてのキャラクターに適用するのが大変で大変で。

そこで、今回はバッチ処理でメインキャラクターの各種設定をサブキャラクターに一括コピーする方法を書いてみようと思います。

もし気に入ったら使ってください。

  • 念のため、何よりも先にFF14のゲーム内でコンフィグデータのサーバーバックアップ機能を使用してください

jp.finalfantasyxiv.com

  • windows11での動作を確認しています
  • ゲームを起動している間は、このバッチを実行しないでください
  • 実行前に、設定エリアの内容を適切に変更する必要があります
  • 自己の責任において実行してください

使い方

1. 下の「バッチ処理」の内容をすべてコピーする

2. メモ帳を立ち上げ、コピーした内容を貼り付ける

3. 設定エリアの内容を適切に変更する

4.ファイル→名前をつけて保存を選択する(ファイル名は「CONFIGCOPYBAT.bat」、ファイルの種類は「すべてのファイル」、エンコードは「ANSI」)

5.保存した「CONFIGCOPYBAT.bat」を実行する

バッチ処理

@echo off

:: ----------------------------------------------------------------------
:: [説明]
:: このバッチは任意に設定した内容に応じて、以下の処理を行います
:: 1. コピー先のフォルダ内のファイルを日時フォルダにバックアップする
:: 2. コピー元のフォルダからコピー先のフォルダへ、
::    コピーしたいファイルのリストで指定したファイルのみをコピーする
:: 3. 結果をログファイルに出力する

:: ----------------------------------------------------------------------
:: [注意事項]
:: 1. ゲームを起動している間は、このバッチを実行しないでください
:: 2. 実行前に、設定エリアの内容を適切に変更する必要があります
:: 3. 自己の責任において実行してください

:: ----------------------------------------------------------------------
:: [設定エリア]

setlocal

:: name1を自分のユーザーフォルダ名に変更
set "user_folder_name=name1"

:: FFXIV_CHR00XXXXXXXXXXXXXXをコピー元のフォルダ名に変更
set "original_folder_name=FFXIV_CHR00XXXXXXXXXXXXXX"

:: FFXIV_CHR00AAAAAAAAAAAAAAからFFXIV_CHR00GGGGGGGGGGGGGGをコピー先のフォルダ名に変更
set "copyto_folder_name1=FFXIV_CHR00AAAAAAAAAAAAAA"
set "copyto_folder_name2=FFXIV_CHR00BBBBBBBBBBBBBB"
set "copyto_folder_name3=FFXIV_CHR00CCCCCCCCCCCCCC"
set "copyto_folder_name4=FFXIV_CHR00DDDDDDDDDDDDDD"
set "copyto_folder_name5=FFXIV_CHR00EEEEEEEEEEEEEE"
set "copyto_folder_name6=FFXIV_CHR00FFFFFFFFFFFFFF"
set "copyto_folder_name7=FFXIV_CHR00GGGGGGGGGGGGGG"

:: ----------------------------------------------------------------------
:: [実行エリア]

:: コピーしたいファイルのリストを指定
set "file_list=ADDON.DAT COMMON.DAT CONTROL0.DAT CONTROL1.DAT HOTBAR.DAT KEYBIND.DAT LOGFLTR.DAT MACRO.DAT"

:: ソースフォルダとターゲットフォルダを指定
set "all_folder=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn"
set "backup_folder=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\backup"
set "source_folder=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\%original_folder_name%"
set "target_folder1=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\%copyto_folder_name1%"
set "target_folder2=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\%copyto_folder_name2%"
set "target_folder3=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\%copyto_folder_name3%"
set "target_folder4=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\%copyto_folder_name4%"
set "target_folder5=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\%copyto_folder_name5%"
set "target_folder6=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\%copyto_folder_name6%"
set "target_folder7=C:\Users\%user_folder_name%\Documents\My Games\FINAL FANTASY XIV - A Realm Reborn\%copyto_folder_name7%"

:: 現在の日時を取得
for /f "usebackq tokens=1,2 delims==" %%a in (`wmic os get localdatetime /format:list`) do if '.%%a.'=='.LocalDateTime.' set ldt=%%b
set "year=%ldt:~0,4%"
set "month=%ldt:~4,2%"
set "day=%ldt:~6,2%"
set "hour=%ldt:~8,2%"
set "minute=%ldt:~10,2%"
set "second=%ldt:~12,2%"

:: バックアップフォルダが存在しない場合は作成
if not exist "%backup_folder%" mkdir "%backup_folder%"

:: 日時フォルダが存在しない場合は作成
if not exist "%backup_folder%\%year%%month%%day%%hour%%minute%%second%" mkdir "%backup_folder%\%year%%month%%day%%hour%%minute%%second%"

(
chcp 65001

:: ソースフォルダとターゲットフォルダの存在チェック、存在しない場合はエラーをログに表示、以降の処理は空振り
echo.
echo folder check start ...
echo.
for %%F in ("%source_folder%" "%target_folder1%" "%target_folder2%" "%target_folder3%" "%target_folder4%" "%target_folder5%" "%target_folder6%" "%target_folder7%") do if not exist "%%~F" echo %%~nxF not found!
echo.
echo ... end

:: ターゲットフォルダ内のファイルをバックアップフォルダの同名のフォルダにコピー
for %%F in ("%source_folder%" "%target_folder1%" "%target_folder2%" "%target_folder3%" "%target_folder4%" "%target_folder5%" "%target_folder6%" "%target_folder7%") do (
    if exist "%%~F" robocopy "%%~F" "%backup_folder%\%year%%month%%day%%hour%%minute%%second%\%%~nF" /r:3 /w:3
)

:: 先のリストで指定したファイルをコピー
if exist "%source_folder%" (
    for %%F in (%file_list%) do (
        for %%T in ("%target_folder1%" "%target_folder2%" "%target_folder3%" "%target_folder4%" "%target_folder5%" "%target_folder6%" "%target_folder7%") do (
            if exist "%%~fT" robocopy "%source_folder%" "%%~fT" %%F
        )
    )
)
) >> "%backup_folder%\%year%%month%%day%%hour%%minute%%second%"\%year%%month%%day%%hour%%minute%%second%_log.txt 2>&1

endlocal
記載されている会社名-製品名-システム名などは、各社の商標、または登録商標です。
(C) SQUARE ENIX CO., LTD. All Rights Reserved.
(C) FF14の例のブログの『あとがき』 All Rights Reserved.