www.pudn.com > 备份及取备份.zip > bf.PRG


*数据备份子程序 
*程序名: 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<100 
  IF JSQ<10 
    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 JSQ1 
    =MESSAGEBOX('请放第'+STR(JSQ,2)+'张盘.',64,'') 
  ENDIF 
  DO WHILE .T. 
    BFFILE=BBFILE(JSQ) 
    IF FILE('A:\'+BFFILE) 
      DELETE FILE A:\&BFFILE 
    ENDIF 
    IF DISKSPACE('A')<1400000 
      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