本文编写于 3621 天前,最后修改于 129 天前,其中某些信息可能已经过时。

喜欢玩Flash游戏的同学要开心了,因为发愁在U盘里存的Flash游戏的存档进度一换机器就没了,游戏没法接着玩,我就着手制作了一个通用Flash游戏存档备份恢复器,它是一个批处理文件名为 Flash游戏存档备份恢复器.bat ,它配合7z.exe应用程序,可以把你机器里所有的(包括在你机器上玩过的网页上的)Flash游戏存档给压缩成一个名为savegame.7z的存档文件保存起来。你把它和存档文件一起放在优盘里,带到别的机器上时,只要双击它,选择恢复存档,就可以把存档恢复到别的机器上了。然后再打开Flash游戏,就会读取到存档了。另外他也支持清除存档功能。批处理的内容如下:

@echo off
cls
color 0A
title Flash游戏存档备份恢复器 by X
mode con COLS=42 LINES=17
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%
FOR /f "delims=" %%I in ("%Var0%") do Set TP=%%~dpI
SET TP=%TP:~0,-1%
SET Z="%TP%\7z.exe"
set GamesavePath="%userprofile%\Application Data\Macromedia\Flash Player\#SharedObjects"
goto Menu
:Menu
cls
color 0A
ECHO.
ECHO + ☆★☆★-     X 制 作      -★☆★☆ +
ECHO  + PS:Flash游戏的存档能否读取取决于 +
ECHO    + 游戏文件的名称和路径是否一致 +
ECHO ————————————————————
echo    [1]. 备份存档   [2]. 恢复存档
echo.
echo    [3]. 删除本机存档
echo.
echo    [4]. 删除本目录存档
echo.
echo    [5]. 退出
echo.
ECHO 〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉
echo.
for %%I in (CHOICE.exe) do if "%%~$PATH:I"=="" goto norc
CHOICE /C 12345 /N /M 请输入选择操作的序号:
IF ERRORLEVEL 1 IF NOT ERRORLEVEL 2 GOTO SERVICE1
IF ERRORLEVEL 2 IF NOT ERRORLEVEL 3 GOTO SERVICE2
IF ERRORLEVEL 3 IF NOT ERRORLEVEL 4 GOTO SERVICE3
IF ERRORLEVEL 4 IF NOT ERRORLEVEL 5 GOTO SERVICE4
IF ERRORLEVEL 5 GOTO END
:norc
SET CHECK=
SET /P CHECK=请输入选择操作的序号并回车:
IF /I "%CHECK%"=="1" GOTO SERVICE1
IF /I "%CHECK%"=="2" GOTO SERVICE2
IF /I "%CHECK%"=="3" GOTO SERVICE3
IF /I "%CHECK%"=="4" GOTO SERVICE4
IF /I "%CHECK%"=="5" GOTO END
goto MENU

:SERVICE1
cls
echo.
if not exist %Z% (
set err=7z.exe不存在
goto error
)
echo 正在备份…请稍后…
if not exist %GamesavePath%\00000000 md %GamesavePath%\00000000
FOR /F %%i In ('DIR %GamesavePath% /B /AD /O-N') DO if not "%%i"=="00000000" xcopy %GamesavePath%\%%i\*.* %GamesavePath%\00000000\*.*  /e /c /q /y && rd %GamesavePath%\%%i /s /q
%Z% a -mx=9 SaveGame.tmp %GamesavePath%\* -o"%TP%" >nul
if exist SaveGame.7z (
for %%a in (SaveGame.tmp) do (
for %%i in (SaveGame.7z) do (
if %%~za lss %%~zi (
echo 备份文件小于先前备份,为防止丢失数据不予覆盖,备份文件名称改为SaveGameLess.7z,有可能是你没有关闭Flash播放器导致的,请关闭Flash播放器重试
if exist SaveGameLess.7z (
del SaveGameLess.7z /q
)
ren SaveGame.tmp SaveGameLess.7z
) else (
echo 备份文件大于先前备份SaveGame.7z,现予覆盖
del SaveGame.7z /q 
ren SaveGame.tmp SaveGame.7z
)
)
)
) else (
ren SaveGame.tmp SaveGame.7z
)
echo.
echo 备份Flash游戏存档完毕,按任意键返回
pause >nul
goto Menu
:SERVICE2
cls
echo.
if not exist %Z% (
set err=7z.exe不存在
goto error
)
if not exist "%TP%\SaveGame.7z" (
set err=存档备份SaveGame.7z不存在
goto error
)
echo 开始恢复…请稍后…
FOR /F %%i In ('DIR %GamesavePath% /B /AD /O-N') DO if not "%%i"=="00000000" rd %GamesavePath%\%%i /s /q
%Z% x -o%GamesavePath% SaveGame.7z -y >nul
echo.
echo 已恢复,按任意键返回
pause >nul
goto Menu


:SERVICE3
cls
if not exist "%TP%"\SaveGame.7z (
COLOR cf
echo 警告
echo.
echo 本目录下好像没有存档,你确定也要本机的存档也删除掉吗?
SET CHECKY2=
SET /P CHECKY2=若要继续请输入大写Y并回车,按其他键返回:
IF /I "%CHECKY2%"=="Y" GOTO delms
goto menu
)
:delms
echo 正在删除…请稍后…
for /d %%a in (%GamesavePath%\*.*) do rd /s /q "%%a" >nul 2>nul
del /a /f /s /q %GamesavePath%\*.* >nul 2>nul
echo 删除本机存档完毕!按任意键返回
pause >nul
GOTO MENU

:SERVICE4
cls
if not exist %GamesavePath%\00000000 (
COLOR cf
echo 警告
echo.
echo 本机好像没有存档,你确定也要本目录下的存档也删除掉吗?
SET CHECKY=
SET /P CHECKY=若要继续请输入Y大写并回车,按其他键返回:
IF /I "%CHECKY%"=="Y" GOTO deldirs
goto menu
)
:deldirs
echo 正在删除…请稍后…
del /a /f /s /q "%TP%"\SaveGame.7z >nul 2>nul
del /a /f /s /q "%TP%"\SaveGameLess.7z >nul 2>nul
echo 删除目录下存档完毕!按任意键返回
pause >nul
GOTO MENU

:error
ECHO.
ECHO + ☆★☆★-    X 制 作     -★☆★☆ +
ECHO. + PS:Flash游戏的存档能否读取取决于 +
ECHO    + 游戏文件的名称和路径是否一致 +
ECHO.
echo              出错啦!!
echo.
ECHO.
ECHO              (*^__^*)
ECHO.
echo.
ECHO             %err%
ECHO.
ECHO.
ECHO 请——按——任——意——键——继——续
pause >nul
goto Menu
:end

注意:要成功读取Flash游戏的存档,必须确保Flash游戏的名称和路径(不包括盘符)没有发生改变