主题:求助文件复制问题
snakebird
[专家分:0] 发布于 2008-06-26 01:45:00
我在程序里面有一段文件复制的命令,执行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文件,就出现前面讲的问题。
我研究了很久,都不知道什么原因,请高人指点啊!!!!!!!
最后更新于:2008-06-26 01:48:00
回复列表 (共20个回复)
11 楼
wzxc [专家分:9440] 发布于 2008-06-27 19:01:00
[quote]离婚、失业不知道算不算是喜事。[/quote]
要坚强,别趴下!!!
12 楼
cbl518 [专家分:57140] 发布于 2008-06-27 19:05:00
如果,你这些 待复制的数据表和, EXE 文件在同一个目录中,
那你就应该 建一个子目录,将待复制的所有数据表,移到该目录中。
在你的主程序中写入:
SET PATH TO "目录路径" ADDITIVE
这样就可以了!
13 楼
snakebird [专家分:0] 发布于 2008-06-27 19:06:00
感谢LuckyLine,我想你说的是正确的。因为确实复制到f.dbf后就不能复制了。而f.dbf后面就是FOXUSER.DBF。这是我忽略了的。谢谢。不过有什么语句可以把FOXUSER.DBF文件排除在外呢?
请教!!!
14 楼
cbl518 [专家分:57140] 发布于 2008-06-27 19:12:00
如果你要复制的文件名都是同样字节长的,
你还可以用:
COPY FILE *.dbf TO testpath\?.dbf
一个 ? 表示 一个字节!
15 楼
snakebird [专家分:0] 发布于 2008-06-27 19:46:00
如果文件名字节不一样呢?楼上的方法好像不是很通用。
16 楼
wzxc [专家分:9440] 发布于 2008-06-27 20:46:00
试试看,如果就是这一个表FOXUSER.DBF的话,复制前先关闭它.完了再打开.不知道可行否?
17 楼
LuckyLine [专家分:1940] 发布于 2008-06-27 20:55:00
用set resource off可以关掉FoxUser,但是我认为不是好办法。如果事先规划好,在命名文件名时,例如GHHXXXX.DBF,以GHH开头。那么,复制时,可以
copy file ghh*.dbf to ...。不知是否可行,一试便知
18 楼
snakebird [专家分:0] 发布于 2008-06-27 22:43:00
谢谢,我现在采用单独的文件夹管理DBF文件,这样就不出错了,而且管理也比较方便。
大家说的方法对我都很有帮助,谢谢。
19 楼
moz [专家分:37620] 发布于 2008-06-28 06:23:00
也许你是对的,而且我也承认自己是一个伪君子.
我一生中最向往的词组是“恩爱”两个字,我最重视的是“责任”两个字。
但很多事情不如你所想,我绝对没想到我会走到这路上来。
我不会趴下,更低落的时候都已经过来了,我想我已经没有什么可以失去的了。
20 楼
北京种子乐 [专家分:3710] 发布于 2008-06-28 08:16:00
[quote]谢谢,我现在采用单独的文件夹管理DBF文件,这样就不出错了,而且管理也比较方便。
大家说的方法对我都很有帮助,谢谢。[/quote]
这种方法比较好[em28][em28][em28]
我来回复