Модераторы Varset 211 Опубликовано 31 августа Модераторы Поделиться #1 Опубликовано 31 августа А сегодня я расскажу как перестать морочиться по поводу сейвов и забыть о недостаточном количестве слотов сохранений в играх. Ссылка на комментарий Поделиться на другие сайты Поделиться
Модераторы Varset 211 Опубликовано 31 августа Автор Модераторы Поделиться #2 Опубликовано 31 августа Итак, MultiSaves Backup Tool Предназначена для бэкапа игровых сейвов. Ключевые особенности: Архивирует сейвы только тогда, когда игра запущена. Неограниченный список архивируемых игр. Блоки сейвов можно добавить в любой момент. Не требует обслуживания, работает по методу "Настроил и забыл". Разве что добавить игру-другую, но переделывать при этом ничего не нужно. Интервал архивирования можно менять, также в любой момент, простым редактированием двух-трех цифр. В архив добавляется путь к оригинальным сохранениям, если вдруг не помним, где они находятся. Каждый архив содержит в названии визуальную метку времени в формате YYYY-MM-DD_HH-MM-SS_GameName.7z Используется архиватор 7zip В утилите уже заряжено несколько примеров игр, просто скопипастить по аналогии Кроме непосредственно сейвов можно добавить к архиву каталог с модами (переменная ModPath) и бэкапить их тоже. А можно не добавлять. И еще при желании добавить один любой каталог (переменная AddPath) на ваш выбор. Кроме непосредственно запускаемого экзешника, по которому программа определяет "запущенность" игры, можно добавить альтернативный экзешник, который тоже будет отслеживаться, например, кроме VoidTrain.exe еще добавить VoidTrain-Win64-Shipping.exe. Мало ли. Имеется возможность автоматически ограничивать количество сейвов. Программа может избавляться от сейвов старше определенного количества дней Избавление от старых сейвов возможно в двух вариантах: удаление насовсем или перемещение в определенный каталог, для вечного хранения. Настраивается независимо для каждого игрового блока (каждой игры). Есть возможность защиты от удаления любого файла архива, если добавить в его имя восклицательный знак. В этом случае сейв перемещается в подкаталог Imoprtant и удален не будет, даже если в настройках стоит удаление. Например, сейвы сохраняются по именем 2022-12-11.05-10-02_NoMansSky.7z, если мы его переименуем в !_2022-12-11.05-10-02_NoMansSky.7z или даже в 2022-12-11.05-10-02_NoMansSky!!!!.7z, то файл переместится в подкаталог Important и будет жить там вечно. Не нужен дополнительный батник для создания задачи Планировщика. Все делает одна программа. При запуске проверяет, существует ли задание, и если нет - предложит его создать с заданными параметрами. Работает под системной учеткой Перед запуском утилиты следует настроить в ней каталоги и значения, соответствующие вашим намерениям. Все значения прописаны либо для примера, либо по умолчанию. Какие строки и параметры нужно поменять - указано в самом батнике. Время начала задания для удобства устанавливается с округлением до часа в меньшую сторону. Например, если батник запущен в 13:47 (в режиме Создание задания Планировщика), то начало работы установится на 13:00. Чтоб бэкапилось не как попало, а по круглым числам минут. Немного о том, как грамотно поступать со старыми сейвами, диск же не резиновый: Первым делом решаем, будем ли вообще чего-нибудь делать с со старыми сейвами. Для этого служит переменная SetOldFilesStatus: У нее три возможных значения: 0 - ничего не делаем, сейвы будут сохраняться до скончания места на диске. 1 - старые сейвы (старше количества дней определяемых переменной DaysForKeep) будут перемещаться в другой каталог, который мы назначаем и там лежать вечно. 2 - старые сейвы будут удаляться насовсем. Навсегда. R.I.P. Но, разумеется, только те, которые старше количества дней, указанных в DaysForKeep Если выбрали перемещение или удаление, то остается решить, за какое время (количество дней) оставляем сейвы - 7 дней, 14, 30 и т.д. За это отвечает перменная DaysForKeep, туда и вписывем желаемое значение. Таким образом, в текущем каталоге архивации (переменная SaveArchivePath) будут оставлены сейвы за срок, указанный в переменной DaysForKeep, а все что старше - удалено насовсем или перемещено в более архивный каталог. Еще один тонкий момент - переменная SetOldFilesStatus приоритетней, чем DaysForKeep. Это значит что если в переменной DaysForKeep будет стоять какое-то число, отличное от нуля (количество дней), а в переменной SetOldFilesStatus у нас ноль (ничего не удалять), то ни удаляться, ни перемещаться сейвы не будут. Текст исходника: :: ========================================================================= :: MultiSaves Backup Tool v3.0 - by Varset - Universal version - 31.08.2024 :: ========================================================================= @echo off set da=%date:~6,4%-%date:~3,2%-%date:~0,2% set ti=%time:~0,2%-%time:~3,2%-%time:~6,2% set ti=%ti: =0% set dt=%da%_%ti% set SetOldFilesStatus= set DaysForKeep= Set GameExeAlt= set ModPath= set AddPath= :: === БЛОК ОБЩИХ НАСТРОЕК === :: === Общая папка куда будем складывать архивы сейвов для всех игр === :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ set SaveArchivePath=G:\GamesArchive\_Saves :: === Путь к архиватору 7z === :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ set ArchiverPath=C:\Program Files\7-Zip\7z.exe :: === Путь к каталогу, в котором будут вечно храниться архивы бэкапов сейвов == :: (только для перемещения, а не удаления) :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ set BackupsArchivePath=G:\Backups\_Archives :: === Интервал создания бэкапов, по умолчанию 15 минут === :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ set interval=15 call :_game1 call :_game2 call :_game3 call :_game4 call :_game5 call :_game6 call :_game7 call :_game8 call :_game9 call :_game10 call :_game11 rem call :_game12 Exit :: === БЛОКИ ИГРОВЫХ СЕЙВОВ === :: Каждый блок - отдельная игра. :: Пример заполнения для игры No Man's Sky :_game1 :: == No Man's Sky === :: === Имя исполняемого файла игры === :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ Set GameExe=NMS.exe :: === Альтернативное имя исполняемого файла игры === :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ Set GameExeAlt=NMS-Win64-Shipping.exe ::------------------------------------------------------------ :: === Имя игры или любое другое, оно же название папки, где будут лежать архивы === :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ set GameName=NoMansSky ::------------------------------------------------------------ :: === Путь к папке, где Steam или игра кладет свои сейвы === :: === (то есть откуда будем тащить файлы сейвов) === :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ set SavePath=c:\Users\Administrator\AppData\Roaming\HelloGames\NMS ::------------------------------------------------------------ :: === За сколько дней оставлять архивы бэкапов. 0 - ничего не удалять. :: === (все, что старше этого числа, будет удаляться) :: === Если переменная SetOldFilesStatus установлена в 0, то неважно какое число тут написано, файлы удаляться не будут :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ set DaysForKeep=0 ::------------------------------------------------------------ :: === Старые файлы удалять или перемещать === :: 0 - ничего не делать, файлы будут копиться :: 1 - перемещать в каталог архива (см.. переменную DaysForKeep) :: 2 - удалять насовсем :: ЗАПОЛНИТЬ ЭТУ СТРОКУ СВОИМИ ДАННЫМИ set SetOldFilesStatus=0 ::------------------------------------------------------------ :: === Путь к каталогу модов === :: === если модов нет, оставьте пустым ==== set ModPath=d:\Steam\steamapps\common\No Man's Sky\GAMEDATA\PCBANKS\MODS\ ::------------------------------------------------------------ :: === Путь к дополнительному каталогу, который следует бэкапить === :: === если не нужен, оставьте пустым ==== set AddPath= goto _CheckGameStatus :_game2 :: === Wanderer === Set GameExe=Wanderer.exe Set GameExeAlt= set ModPath= set AddPath= set GameName=Wanderer set SavePath=c:\Users\Administrator\AppData\Local\Wanderer set SetOldFilesStatus=0 set DaysForKeep=0 goto _CheckGameStatus :_game3 :: === Subnautica === Set GameExe=Subnautica.exe Set GameExeAlt= set ModPath= set AddPath= set GameName=Subnautica set SavePath=d:\Portable\Subnautica.BigUpdate\SNAppData\ set SetOldFilesStatus=0 set DaysForKeep=0 goto _CheckGameStatus :_game4 :: === Subnautica Below Zero === Set GameExe=SubnauticaZero.exe Set GameExeAlt= set ModPath= set AddPath= set GameName=SubnauticaZero set SavePath=d:\Portable\SubnauticaZero.Update.49371\SNAppData\ set SetOldFilesStatus=0 set DaysForKeep=0 goto _CheckGameStatus :_game5 Set GameExe=Firmament.exe Set GameExeAlt= set ModPath= set AddPath= set GameName=Firmament set SavePath=c:\Users\Administrator\AppData\Local\Firmament\ set SetOldFilesStatus=0 set DaysForKeep=0 goto _CheckGameStatus :_game6 Set GameExe=FactoryGame.exe Set GameExeAlt= set ModPath= set AddPath= set GameName=Satisfactory set SavePath=c:\Users\Administrator\AppData\Local\FactoryGame\ set SetOldFilesStatus=0 set DaysForKeep=0 goto _CheckGameStatus :_game7 Set GameExe=Planet Crafter.exe Set GameExeAlt= set ModPath=d:\Steam\steamapps\common\The Planet Crafter\BepInEx\plugins\ set AddPath= set GameName=PlanetCrafter set SavePath=C:\Users\Administrator\AppData\LocalLow\MijuGames\ set SetOldFilesStatus=1 set DaysForKeep=30 goto _CheckGameStatus :_game8 Set GameExe=ForeverSkies.exe Set GameExeAlt=ForeverSkies-Win64-Shipping.exe set ModPath= set AddPath= set GameName=ForeverSkies set SavePath=C:\Users\Administrator\AppData\Local\ProjectZeppelin set SetOldFilesStatus=1 set DaysForKeep=30 goto _CheckGameStatus :_game9 Set GameExe=Breathedge.exe Set GameExeAlt= set ModPath= set AddPath= set GameName=Breathedge set SavePath=d:\Steam\steamapps\common\Breathedge\Breathedge\Saved\ set SetOldFilesStatus=0 set DaysForKeep=0 goto _CheckGameStatus :_game10 Set GameExe=VoidTrain.exe Set GameExeAlt=VoidTrain-Win64-Shipping.exe set ModPath= set AddPath= set GameName=Voidtrain set SavePath=c:\Users\Administrator\AppData\Local\VoidTrain\ set SetOldFilesStatus=0 set DaysForKeep=0 goto _CheckGameStatus :_game11 Set GameExe=Grounded.exe set GameName=Grounded set SavePath=c:\Users\Administrator\Saved Games\Grounded\ set SetOldFilesStatus=0 set DaysForKeep=0 goto _CheckGameStatus rem :_game12 rem Set GameExe=NMS.exe rem set GameName=NoMansSky rem set SavePath=c:\Users\Administrator\AppData\Roaming\HelloGames\NMS\ rem set SetOldFilesStatus=0 rem set DaysForKeep=0 rem goto _checktasks ::exit :_GameSavesBackup md %SaveArchivePath% md %BackupsArchivePath% set FileName=%dt%_%GameName%.7z :: Если переменные ModPath и AddPath не определены, кавычки ставить не нужно, иначе ощибка архивации if "%ModPath%" NEQ "" set "quotam="" if "%AddPath%" NEQ "" set "quotap="" "%ArchiverPath%" a -mx5 -ssw "%SaveArchivePath%\%GameName%\%FileName%" "%SavePath%" %quotam%%ModPath%%quotam% %quotap%%AddPath%%quotap% set filenamemark=*!*.* /B md %SaveArchivePath%\%GameName%\Important\ for /f %%f IN ('dir %SaveArchivePath%\%GameName%\%filenamemark%' ) do move %SaveArchivePath%\%GameName%\%%f %SaveArchivePath%\%GameName%\Important\ if %SetOldFilesStatus% EQU 0 exit /b if %DaysForKeep% NEQ 0 goto _checkcondition exit /b :_checkcondition if %SetOldFilesStatus% EQU 1 goto _moveoldfiles if %SetOldFilesStatus% EQU 2 goto _deloldfiles exit /b :_CheckGameStatus call :_checkschtasks tasklist | findstr /i "%GameExe%" if %errorlevel%==0 goto _GameSavesBackup if [%GameExeAlt%] NEQ [] tasklist | findstr /i "%GameExeAlt%" if %errorlevel%==0 goto _GameSavesBackup exit /b :_deloldfiles :: === Для удаления старых файлов === forfiles -p "%SaveArchivePath%\%GameName%" -m *.7z -d -%DaysForKeep% -c "cmd /c del /q @path" exit /b :_moveoldfiles :: === Для перемещения старых файлов === md %BackupsArchivePath%\%GameName% forfiles -p "%SaveArchivePath%\%GameName%" -m *.7z -d -%DaysForKeep% -c "cmd /c move /y @path %BackupsArchivePath%\%GameName%" exit /b ::=================================================== :: === Проверка на установленную задачу Планировщика === :_checkschtasks set batfilename=%~nx0 set CurrentPath=%~dp0 set SMBPath=%CurrentPath%%batfilename% @schtasks /change /tn "SavesMultiBackup" /ru "" /ri %interval% 1>NUL 2>&1 If %ERRORLEVEL% EQU 1 GOTO _NOTFOUND exit /b :_NOTFOUND @echo. @echo Задача для бэкапа не существует. Создать такую задачу? (Y/N)? @echo. @echo (Если вы хотите переложить этот файл в другое место, нажмите N, @echo скопируйте этот файл в новое место и запустите его оттуда) @echo. @set "choice=" @Set /p choice="Выберите Y или N и нажмите Enter: " @echo. if not defined choice goto _NOTFOUND if /i "%choice%"=="y" (GOTO _createtask) if /i "%choice%"=="n" (exit) goto _NOTFOUND :_createtask set timewtz=%time:~0,2% set timewz=%timewtz: =0% set needtime=%timewz%:00 @schtasks /create /SC DAILY /ST %needtime% /RI %interval% /RU "" /DU 24:00 /F /NP /TN SavesMultiBackup /RL HIGHEST /TR "%SMBPath%" 1>NUL 2>&1 @Echo. @echo Задача создана. Нажмите любую кнопку для запуска бэкапов. @echo Не забывайте где у вас лежит этот файл, перемещать его нельзя. @echo. @pause 1>NUL 2>&1 exit /b Так же прикрепляю сам батник: _MultiSavesBackupTool-3.0.zip Это не прототип, программа абсолютно рабочая, лично пользуюсь уже почти два года. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти