编写两个bat脚本
PVZ的数据默认存储位置在:C:\ProgramData\PopCap Games\PlantsVsZombies\pvzHE\yourdata
可能不同电脑,前面的名称会不同,根据具体的路径,修改代码中的路径即可每30秒,将yourdata目录中的所有文件复制备份到同目录的yourdata_bak目录中根据个人需要,可以修改定时的时间,不建议修改的太少,30秒可以了在启动的时候,如果发现PVZ的安装根目录有crash.txt文件,那么删除该文件,并且将yourdata_bak目录中的所有文件,复制到yourdata中覆盖,这样就实现了数据恢复。
- 第一个bat脚本 start.bat
@echo off
setlocal enabledelayedexpansion
REM 设置UTF-8编码,防止下面的中文字符显示乱码
chcp 65001 >nul
REM 定义要修改的注册表路径和键值
set regPath=HKEY_CURRENT_USER\Software\PopCap\PlantsVsZombies
set regKey=ScreenMode
set regValue=0
REM 定义备份脚本的名称和路径
set backupScriptName=backup_pvz_data.bat
set backupScriptPath=%~dp0%backupScriptName%
REM 定义崩溃文件的名称和路径
set crashFileName=crash.txt
set crashFilePath=%~dp0%crashFileName%
REM 设置源目录和备份目录,这个路径可能会有不同,根据实际修改
set "sourceDir=C:\ProgramData\PopCap Games\PlantsVsZombies\pvzHE\yourdata"
set "backupDir=C:\ProgramData\PopCap Games\PlantsVsZombies\pvzHE\yourdata_bak"
REM 检查崩溃文件是否存在,如果存在则删除,并且将备份文件复制到源数据目录
if exist "%crashFilePath%" (
del "%crashFilePath%"
if exist "%backupDir%" (
xcopy /s /y "%backupDir%" "%sourceDir%" >nul 2>&1
)
)
REM 修改PVZ注册表
reg add "%regPath%" /v "%regKey%" /t REG_DWORD /d %regValue% /f
REM 如果上面的命令成功执行,则启动pvzHE-Launcher.exe
if %errorlevel% equ 0 (
REM 假设pvzHE-Launcher.exe与这个.bat文件在同一个目录下
start "" "%~dp0pvzHE-Launcher.exe"
wmic path win32_process where "name='cmd.exe'" get CommandLine | findstr /I /C:"%backupScriptPath%" >nul
if !errorlevel! neq 0 (
REM 如果没有找到备份进程,则启动新的 backup_pvz_data.bat 进程
start "backup_pvz_data" /min "%backupScriptPath%"
)
) else (
echo 修改PVZ注册表失败,错误代码:%errorlevel%
pause
)
endlocal
exit /b
- 第二个bat脚本 backup_pvz_data.bat
@echo off
setlocal
REM 设置源目录和备份目录,这个路径可能会有不同,根据实际修改
set "sourceDir=C:\ProgramData\PopCap Games\PlantsVsZombies\pvzHE\yourdata"
set "backupDir=C:\ProgramData\PopCap Games\PlantsVsZombies\pvzHE\yourdata_bak"
REM 设置UTF-8编码,防止下面的中文字符显示乱码
chcp 65001 >nul
echo 正在自动备份PVZ数据,默认每30秒备份一次,关闭本命令窗口后即停止备份(Backing up PVZ data)...
REM 等待5秒,确保游戏已经运行
timeout /t 5 >nul
REM loop backup
:loop
REM 检查 PlantsVsZombies.exe 是否已在运行,不运行则退出
tasklist /fi "imagename eq PlantsVsZombies.exe" | findstr /i "PlantsVsZombies.exe" >nul 2>&1
if %errorlevel% neq 0 (
exit
)
REM 确保备份目录存在,如果不存在则创建
if not exist "%backupDir%" mkdir "%backupDir%"
REM 执行备份,使用xcopy命令,并直接覆盖已存在的文件
xcopy /s /y "%sourceDir%" "%backupDir%" >nul 2>&1
if %errorlevel% neq 0 (
echo 备份失败,请检查源目录和备份目录是否存在,是否具有读写权限
pause
exit
)
timeout /t 30 /nobreak >nul
REM 返回循环继续备份
goto loop
-
将start.bat和backup_pvz_data.bat放到pvz的安装根目录中
-
修改桌面的pvz的快捷方式,将启动路径指向start.bat
-
修改桌面的pvz的快捷方式,将图标指向pvz的安装根目录的logo.ico
完成,游戏崩溃时数据自动备份了。