无忧启动论坛
标题:
保存或恢复变量的简易脚本
[打印本页]
作者:
zxw
时间:
2011-5-30 19:46
标题:
保存或恢复变量的简易脚本
!BAT
debug 0
cat --locate=!BATSAVEVAR --length=11 (md)0x3800+10 && goto :restore
echo !BATSAVEVAR > (md)0x3800+10
debug 1
set | call :savevar=
debug 0
exit
:savevar
if #%1==# exit
echo set %1==%2 >> (md)0x3800+10
shift
shift
goto :savevar
:restore
(md)0x3800+10
exit
复制代码
话不多说,懂得用的,就拿去用。
[
本帖最后由 zxw 于 2011-5-30 19:49 编辑
]
作者:
zhaohj
时间:
2011-5-30 22:24
先保存,那你能保证恢复时7M处不被破坏?
我想这个只有自己才知道,放在内存中总是不放心的。
作者:
zxw
时间:
2011-5-30 23:22
标题:
回复 #2 zhaohj 的帖子
我想内存中保存的可以作为跳板,可以复制到可靠的空白文件中去。
作者:
zhaohj
时间:
2011-5-30 23:46
内存变量最多是64个,每个变量占8个字节,即1个扇区,512字节
变量值占一个扇区即512字节。故共65个扇区。
变量及变量值放在(md)0x228的65个扇区,即(md)0x228+65
只要把这段内存保存,可能更加简单。
作者:
zxw
时间:
2011-5-30 23:55
标题:
回复 #4 zhaohj 的帖子
这个我也考虑过,方法应该更简单,但觉得占用扇区太多。
[
本帖最后由 zxw 于 2011-5-31 00:00 编辑
]
作者:
zhaohj
时间:
2011-5-31 11:31
这个请教下C大比较放心,应该有个内存地址是读取变量数的。比如变量数是N,只要保存(md)0x228+(n+1),n<=63
作者:
chenall
时间:
2011-5-31 11:42
标题:
回复 #6 zhaohj 的帖子
这个中间有可能是空的,最保险的是使用一个空白的文件来备份,不过因为设计的关系,备份需要比较大的空间(备份一个是65个扇区太概是33KB)
作者:
tuxw
时间:
2011-6-2 03:55
直接保存65个扇区是最简单的,恢复也容易
如果计较空间的话,可以用下面的代码,几乎不点一个多余的字节,缺点是不能保存内置变量还要用到2个外部命令,但现在wenv已经很少人用了,不保存内置变量也没关系
!BAT
if "%1"=="" exit
set > (md)0x300+65
echo !BAT > (md)0x3000+66
wenv for /f "delims=" %i in ( (md)0x300+65 ) do echo set %i >> (md)0x3000+66
wenv find -c -e -r \r\n (md)0x3000+66 ]]& set len=${?_WENV}
if exist %1 && fat del %1
fat mkfile size=%len% %1
dd if=(md)0x3000+66 of=%1 bs=1 count=%len%
复制代码
用法: ../save.bat (fd0)/var.bat
(fd0)需要可写,再运行 (fd0)/var.bat就恢复了。
一般情况下这个(fd0)也还是在内存中,也不一定可靠的,多一重保障而已
[
本帖最后由 tuxw 于 2011-6-2 15:40 编辑
]
SAVE.rar
2011-6-2 15:40 上传
点击文件名下载附件
下载积分: 无忧币 -2
291 Bytes, 下载次数: 21, 下载积分: 无忧币 -2
作者:
zxw
时间:
2011-6-2 11:27
标题:
回复 #8 tuxw 的帖子
呵,抛砖引玉,学习了。
欢迎光临 无忧启动论坛 (http://wuyou.net./)
Powered by Discuz! X3.3