*数据备份子程序
*程序名: BF
*开发日期: 95,8,10
*程序员: 庄帆
*变量说明
*QDQ:选择驱动器
*ERR:接收错误信息
*DD:用于等待的伪变量
*TC:是否退出
*SCR1:存屏
*YYHQDQ:原隐含驱动器
*CPXYRL:磁盘剩余容量
*ESC1:READ时未修改按ESC键退出的READKEY值
*ESC2:READ时修改后按ESC键退出的READKEY值
*PS:磁盘盘数
*BBFILE:备份文件名
*JSQ:计数器
*XL:虚拟变量(无意义)
*修改记录
*1998.9.14 庄稼
*1999.5.3 庄稼
TC=.F.
ERR=0
DIMENSION BBFILE(99)
JSQ=1
XL=' '
QD=1
DO WHILE JSQ IF JSQ BBFILE(JSQ)='BB.00'+STR(JSQ,1)
ELSE
BBFILE(JSQ)='BB.0'+STR(JSQ,2)
ENDIF
JSQ=JSQ+1
ENDDO
DO WHILE .T.
*确认和检测软盘
ON ERROR ERR=ERROR()
CPXYRL=DISKSPACE('A')
*驱动器没准备好的处理
IF ERR#0
qd=MESSAGEBOX('软盘没有准备好或软盘损坏, 请检查!是否重试?',33,'')
IF QD=2
TC=.T.
EXIT
ENDIF
ERR=0
ELSE
EXIT
ENDIF
ENDDO
ON ERROR
IF TC
EXIT
ENDIF
*利用ARJ在硬盘上生成数据
close table all
DELETE FILE BB.0??
RUN ARJ U -Y -V1440 BB.001 *.DBF *.FPT *.?DX *.MEM
*检测数据有几张盘
PS=1
DO WHILE .T.
IF FILE(BBFILE(PS))
PS=PS+1
ELSE
EXIT
ENDIF
ENDDO
=MESSAGEBOX('本次备份需要'+STR(PS-1,2)+'张盘,请插入第一张盘。',64,'')
*SET COLOR TO
JSQ=1
XZ=1
DO WHILE JSQ *检测磁盘容量和盘正确与否
IF JSQ>1
=MESSAGEBOX('请放第'+STR(JSQ,2)+'张盘.',64,'')
ENDIF
DO WHILE .T.
BFFILE=BBFILE(JSQ)
IF FILE('A:\'+BFFILE)
DELETE FILE A:\&BFFILE
ENDIF
IF DISKSPACE('A') qd=MESSAGEBOX('磁盘容量不够,是否换盘重试?',33,'')
IF qd=1
LOOP
ELSE
EXIT
ENDIF
ENDIF
EXIT
ENDDO
IF qd=2
EXIT
ENDIF
wait window '正在备份数据, 请稍候...' nowait
COPY FILE &BFFILE TO A:\&BFFILE
DELETE FILE &BFFILE
JSQ=JSQ+1
IF TC
EXIT
ENDIF
ENDDO
IF QD=1
SAVE TO A:\PS ALL LIKE PS
WAIT WINDOW '备份完毕!' NOWAIT
ENDIF