回 帖 发 新 帖 刷新版面

主题:关于数据备份的问题?

建立一个备份数据库中所有记录的命令按钮,但是在程序连编后,制作成独立的安装程序,在计算机上安装后,执行这个命令,总显示有部分文件在使用,无法备份,但是不能备份的文件基本上是.exe,foxuser.dbf,foxuser.frp,和表单上的一些小图标,有没有办法在备份的时候,忽略这几个文件,就是当遇到文件正在使用时,直接跳过,不用复制。谢谢了

回复列表 (共7个回复)

沙发

请你给出你的备份代码好么?
一般而言,备份时直接选数据文件即可。这是有办法的,所以要先看你的备份方法!

板凳

是的,我也知道备份一般是备份数据文件就行的,但是我的数据表链接着很多图片以及其他内容,需要把默认路径下的所有文件都备份了,现在关键的问题是我不知道怎样忽略掉.exe和foxuser.dbf和foxuser.fxp在每次执行程序后总会产生那两个令人讨厌的文件。。。。。。。
path_1=ADDBS(ALLTRIM(thisform.text1.Value))
path_2=ADDBS(ALLTRIM(thisform.text2.Value))
   IF EMPTY(path_1) OR EMPTY(path_2)
      MESSAGEBOX("备份数据库名和路径不能为空!",16,"系统")
   ELSE
      IF DIRECTORY(path_2)=.f.
          MD "&path_2"
       ENDIF
      IF RIGHT(path_1,1) <> "\"
      dirpath=path_1+"\*.*"
      Ypath=path_1+"\"
      ELSE
       dirpath=path_1+"*.*"
       Ypath=path_1
      ENDIF
      ADIR(filecursor,dirpath)
      cout=ALEN(filecursor,1)
      thisform.olecontrol1.Visible=.t.
      thisform.olecontrol1.max=cout
      FOR m=1 TO cout
            thispathname=Ypath+ALLTRIM(filecursor(m,1))
            bakpathname=path_2+ALLTRIM(filecursor(m,1))
            COPY FILE "&thispathname" TO "&bakpathname"
       thisform.olecontrol1.value=m
       thisform.Refresh
      ENDFOR
      thisform.olecontrol1.Visible=.f.
      MESSAGEBOX("数据备份成功!",48,"系统")
     ENDIF
     thisform.refresh

3 楼

試試:
FOR m=1 TO cout
    thispathname=Ypath+ALLTRIM(filecursor(m,1))
    bakpathname=path_2+ALLTRIM(filecursor(m,1))
    if JUSTEXT(thispathname) = 'exe' or JUSTFNAME(thispathname) = 'foxuser.dbf' ;
                                     or  JUSTFNAME(thispathname) = 'foxuser.frp' 
    else
       COPY FILE "&thispathname" TO "&bakpathname"
       thisform.olecontrol1.value=m
       thisform.Refresh
    endif
ENDFOR

4 楼

不行啊,if JUSTEXT(thispathname) = 'exe' or JUSTFNAME(thispathname) = 'foxuser.dbf' ;
                                     or  JUSTFNAME(thispathname) = 'foxuser.frp' 这一句只有假设,没有操作呀,怎样把这三个文件忽略

5 楼

只有假设,没有操作

不就忽略了嗎!

else裡你不是用
       COPY FILE "&thispathname" TO "&bakpathname"
做了備份嗎?


不解。

6 楼

[quote]不行啊,if JUSTEXT(thispathname) = 'exe' or JUSTFNAME(thispathname) = 'foxuser.dbf' ;
                                     or  JUSTFNAME(thispathname) = 'foxuser.frp' 这一句只有假设,没有操作呀,怎样把这三个文件忽略[/quote]

这句话就是判断文件扩展名是否为EXE等之类的,你自己修改并完善啊!

7 楼

不知道怎么完善啊, 请赐教 。

我来回复

您尚未登录,请登录后再回复。点此登录或注册