关于filecopy问题再问!(困扰以久)

pumalike 2002-08-12 04:34:04
先用filecopy拷贝文件,拷贝完之后操作该文件时出错,这是什么缘故?是不是拷
贝来的文件在什么地方还在被占用?要如何解决?
我要拷贝的文件很小的,有人说拷贝是非同步的,要等待,于是我就
试了用goto pose语句一直循环等待,可是等了几分钟都不行,
我看了文件早就拷贝好了,我想文件肯定是在什么地方被占用了。我还这样试过:
(在vb环境下,对代码进行调试)手工把文件a拷贝好,把程序改为“先调用
convert.dll(c++编译的函数)对文件a进行操作,然后再从其他地方拷贝文件
a把a文件覆盖掉”,这样第一次调试运行covert.dll函数是可以的,但是停止此次
调试再进行调试就不行了,就是因为上次调试的时候已经对a进行了拷贝,a似乎还
在什么地方被占用了,不管等待时间有多长都不行!我要是把程序关闭,重新打开
程序进行调试的话,第一次又可以的。这肯定不是说拷贝没完成的问题,而是a被
什么所占用。不知道我想的有没有道理,请各位指教!谢谢
部分主要代码如下:
Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder("路径")
Set fc = f.Files
For Each f1 In fc
FileCopy" 路径"& "\" & f1.Name & "", "d:\mycode\抄表
\dll0\dll\data\" & f1.Name & ""
Next
'调用IDBConvert.dll处理拷贝进来的文件
Dim b As Boolean
b = IDBConvert()
If b = True Then
MsgBox "转换成功!"
Else
MsgBox "转换失败!"
End If
每次都失败!我要是先把文件手动拷贝进去,再运行IDBConvert.dll是可以的


...全文
85 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pumalike 2002-08-16
  • 打赏
  • 举报
回复
非常感谢taojm!
taojm 2002-08-16
  • 打赏
  • 举报
回复
Private Const FOF_FILESONLY = &H80 ' on *.*, do only files
Private Const FOF_MULTIDESTFILES = &H1
Private Const FOF_NOCONFIRMATION = &H10 ' Don't prompt the user.
Private Const FOF_NOCONFIRMMKDIR = &H200 ' don't confirm making any needed dirs
Private Const FOF_RENAMEONCOLLISION = &H8
Private Const FOF_SILENT = &H4 ' don't create progress/report
Private Const FOF_SIMPLEPROGRESS = &H100 ' means don't show names of files
Private Const FOF_WANTMAPPINGHANDLE = &H20
Private Const FO_COPY = &H2 ' Fill in SHFILEOPSTRUCT.hNameMappings
Private Type SHFILEOPSTRUCT

hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String ' only used if FOF_SIMPLEPROGRESS
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" (lpFileOp As SHFILEOPSTRUCT) As Long


Private Sub Form_Load()
Dim r As Long
Dim f As SHFILEOPSTRUCT
With f
.hwnd = Me.hwnd
.wFunc = FO_COPY
.pFrom = "d:\b.txt"
.pTo = "c:\b.txt"
.fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
End With
r = SHFileOperation(f)
End Sub

对不起前面少定义了个fo-copy,现在可以了
pumalike 2002-08-15
  • 打赏
  • 举报
回复
不行,不知道怎么回事,又没有出错提示
taojm 2002-08-15
  • 打赏
  • 举报
回复
你把c;\改成c;\b.txt试试看
suntt 2002-08-15
  • 打赏
  • 举报
回复
不会是忘了CLOSE
pumalike 2002-08-15
  • 打赏
  • 举报
回复
我运行了一下,运行时没有出错,可是c盘根本就没有拷贝好的b.txt文件,不知道是什么原因??
taojm 2002-08-14
  • 打赏
  • 举报
回复
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String ' only used if FOF_SIMPLEPROGRESS
End Type
是拷贝文件的信息
taojm 2002-08-14
  • 打赏
  • 举报
回复
.pFrom = "d:\b.txt"是你要拷贝的文件
.pTo = "c:\"是你要拷贝到那里
你把上述语句年贴到vb里在d:\新建一个b.txt执行后看看c;是不是有同样的.txt就知道则么用了
pumalike 2002-08-13
  • 打赏
  • 举报
回复
不大明白,能帮我讲解讲解吗?非常感谢
taojm 2002-08-12
  • 打赏
  • 举报
回复
给你看看一段程序就明白了
Private Const FOF_FILESONLY = &H80 ' on *.*, do only files
Private Const FOF_MULTIDESTFILES = &H1
Private Const FOF_NOCONFIRMATION = &H10 ' Don't prompt the user.
Private Const FOF_NOCONFIRMMKDIR = &H200 ' don't confirm making any needed dirs
Private Const FOF_RENAMEONCOLLISION = &H8
Private Const FOF_SILENT = &H4 ' don't create progress/report
Private Const FOF_SIMPLEPROGRESS = &H100 ' means don't show names of files
Private Const FOF_WANTMAPPINGHANDLE = &H20 ' Fill in SHFILEOPSTRUCT.hNameMappings
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String ' only used if FOF_SIMPLEPROGRESS
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" (lpFileOp As SHFILEOPSTRUCT) As Long


Private Sub Form_Load()
Dim r As Long
Dim f As SHFILEOPSTRUCT
With f
.hwnd = Me.hwnd
.wFunc = FO_COPY
.pFrom = "d:\b.txt"
.pTo = "c:\"
.fFlags = FOF_SIMPLEPROGRESS Or FOF_FILESONLY
End With
r = SHFileOperation(f)
End Sub
pumalike 2002-08-12
  • 打赏
  • 举报
回复
大家帮帮忙啊!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧