回 帖 发 新 帖 刷新版面

主题:求助文件复制问题

我在程序里面有一段文件复制的命令,执行a.dbf到z.dbf的拷贝,和a.cdx到z.cdx的拷贝,一共是52个文件:
    MD testpath
    COPY FILE a.dbf TO testpath\a.dbf
    COPY FILE b.dbf TO testpath\b.dbf
    ....
    COPY FILE z.dbf TO testpath\z.dbf
    
    COPY FILE a.cdx TO testpath\a.cdx
    COPY FILE b.cdx TO testpath\b.cdx
    ...
    COPY FILE z.cdx TO testpath\z.cdx
    
上面的命令运行很正常,但是很罗嗦,于是就把代码简化如下:
    MD testpath
    COPY FILE *.cdx TO testpath\*.cdx
    COPY FILE *.dbf TO testpath\*.dbf
这段命令能够把cdx文件全部进行拷贝,但是在拷贝dbf文件时,只能拷贝一部分文件,并且提示“文件正在使用”。但事实上这段命令是在所有dbf文件打开前运行的。而且这段代码在VFP的调试界面里能完全正常运行,一旦运行编译后的exe文件,就出现前面讲的问题。

我研究了很久,都不知道什么原因,请高人指点啊!!!!!!!




回复列表 (共20个回复)

沙发

事实上,你已经打开了文件,打开的文件不能使用COPY FILE ,但可以用copy to
你试一试下面的程序

if .not.dire('testpath')
 md testpath
endi
clos data
COPY FILE *.cdx TO testpath\*.cdx
COPY FILE *.dbf TO testpath\*.dbf

板凳

谢谢 0901chang,但是问题没有解决,而且我很确定没有打开任何一个DBF文件,因为这段代码是写在程序的最前面的。

3 楼

你在copy file 之前加一句clos data以确保关闭全部的表试一试再说。故障排除经常需要看似很笨的办法,但笨办法能确保你排除掉某种关连问题存在的可能性。

如果还不行,那可能是操作系统有问题,或者你的vf系统出了毛病,需要重新安装。
有的时候,病毒也能引起非常奇怪的问题。

4 楼

你肯定a-z的表没有打开,但其它表是否打开?

COPY FILE *.dbf TO testpath\*.dbf

是将当前目录下的表都进行拷贝,系统已经提示“文件正在使用”,就可以肯定有人已经打开了当前目录下的表。楼主请相信vfp的提示,若没有打开的表,vfp不会有这个提示,否则就是操作系统出毛病了,建议你用《排除法》去发现故障。

5 楼

建议有四:

1. 使用引号:
   copy file "*.dbf" to "testpath"
2. 不需要改名的情况下,目标使用路径名,如上例。
3. 为免节外生枝,VFP没有覆盖提示,也许会提示出错,复制前最好删除可能的同名文件
   dele file "testpath\*.dbf"
   dele file "testpath\*.cdx"
4. 如果问题没有解决,可以尝试使用VBS脚本对象。

6 楼

好长时间没见 moz 先生了!
这次竟以全新的面貌出现,着实令老夫我有一种全新的感觉!
是不是 moz 先生有了什么喜事了???

7 楼

离婚、失业不知道算不算是喜事。

8 楼

你没有打开表,但是系统自动打开了一些表,例如FoxUser.dbf
*.dbf当然包含它了。于是“正在使用”

9 楼

离婚  这两个字我看到就别扭!
这句话,出自 moz 先生的口,那就更不应该!
如果是真的,那你就个地地道道的伪君子。就不是一个人了!
要是开玩笑,说明你对不起你的夫人,开玩笑要有个度,超出这个度就不好了!
至于好事坏事,我不清楚,我自觉得这不是你应该讲的话。


失业对你来讲,我看是一件大喜事。
我想只要砸掉你可依赖的饭碗,
你就会凭你的本事,要独立的一心一意干事业了。
这样你就再也感觉不到,当打工仔的苦恼了。
就这件事来看,我看你很适合失业!

失业没什么了不起的,男子汉活的就是争一口气,否则就一事无成!

10 楼

COPY FILE *.dbf TO testpath\*.dbf

表示你要复制 testpath\ 目录下的所有的数据表。
当你该目录下存在,系统使用的表时,
复制到该文件时,就会提示:“文件正在使用”,同时中止了复制任务。
所以你只得到已经复制的那一部分数据表了。


我来回复

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