复制文件,重命文件不覆盖?
请教VB高手们:把A目录里的全部xls文件复制到B目录里,重命文件不覆盖,也不出现提示,应该怎么写代码呀? --------------------编程问答-------------------- if dir(目标文件)="" then
'复制
endif
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- if dir(目标文件)="" then
'复制
endif
请问这个 dir(目标文件) 里的目标文件怎么写呀?在A、B目录里有好多文件的呀?从A->B,B目录里已经存在的文件就不更新,只复制B目录里没有的文件。完整代码怎么写呀? --------------------编程问答-------------------- 这样试试看
Dim Fso As New FileSystemObject
Dim A_Folder,A_Files,A_Path
Set Fso = CreateObject("Scripting.FileSystemObject")
Set A_Folder = Fso.GetFolder("A的文件夹路径")
Set A_Files = A_Folder.Files
For Each A_Path In A_Files
Fso.CopyFile A_Path.path,"B的文件夹路径",true
Next
Set A_Files = Nothing
Set A_Folder = Nothing
Set Fso = Nothing --------------------编程问答-------------------- 看错了主楼的意思,不覆盖重名文件将true改成false就可以了,不过a中的文件不会复制到b文件夹中来。 --------------------编程问答-------------------- CopyFile 方法
将一个或多个文件从某位置复制到另一位置。
object.CopyFile source, destination[, overwrite]
参数
object
必选项。应为 FileSystemObject 对象的名称。
source
必选项。表示指定文件的字符串。要复制一个或多个文件时,文件名中可以有通配符。
destination
必选项。表示目标位置的字符串,从 source 复制文件到该位置。不允许用通配符。
overwrite
可选项。Boolean 值表明是否覆盖现有文件。如果是 True,则覆盖文件;如果是 False,则不覆盖现有文件。默认值是 True。要注意,无论 overwrite 设置为何值,只要设置 destination 为只读属性,CopyFile 操作就无法完成。
说明
仅能在 source 参数的路径最后一个组成部分中使用通配符。例如,可以使用:
FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"
但是,不能使用:
FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"
如果 source 包含通配符或 destination 以路径分隔符 (\) 结束,则假定 destination 是现有文件夹,复制匹配文件到该文件夹。否则,假定 destination 为要创建的文件。在任一种情况下,复制单个文件时,会出现以下三种情况。
如果 destination 不存在,则复制 source。这是通常会发生的情况。
如果 destination 是已经存在的文件,当 overwrite 为 False 时会出现错误。否则,复制 source 覆盖现有文件。
如果 destination 是目录,则会出现错误。
如果 source 使用通配符,但并没有相匹配的文件时,则会出现错误。CopyFile 方法在遇到出现的第一个错误时停止。该方法不会撤消错误发生前所作的任何更改。
--------------------编程问答-------------------- 不用写代码,上网下载一个COPY的工具软件,多得很~ --------------------编程问答-------------------- 做个记号 --------------------编程问答-------------------- 重命文件不覆盖,要么重名文件不拷,要么拷过去改名,判断一下是否重名就行了,都不复杂. --------------------编程问答-------------------- 你的這個問題網上有存在的代易做图,我以前也做過這個問題。 --------------------编程问答-------------------- --------------------编程问答-------------------- ding --------------------编程问答-------------------- 在网上确实有现成的代码,我见过 --------------------编程问答-------------------- 用Copyfile 还是蛮简便的! --------------------编程问答-------------------- xcopy /d 源文件 目标文件 --------------------编程问答-------------------- ding --------------------编程问答-------------------- Up! --------------------编程问答-------------------- 复制不覆盖(重命名)这个问题很容易解决吧?
假定原文件名Abc.txt
定义一个变量i&
目标文件名=原文件名
如果目标文件存在 那么就 spit(目标文件名,".")
取得原文件名前部abc
i=i+1
新的目标文件名=原文件名前部+"(" +i +")+原文件名后部
即abc(1).txt
反复测试dir(目标文件名)<>""? --------------------编程问答-------------------- 方案1.dir+copyfile
方案2.filesystemobject --------------------编程问答-------------------- 批处理
@echo off
if "%1"=="" goto u
if "%2"=="" goto u
goto m
:u
echo 将目录1中有而在目录2中没有的所有[指定]文件全部拷贝到目录2中的批处理merge.bat
echo (不含子目录,依赖f:\lackof.exe)
echo 例如: merge c:\dirname1 e:\dirname2 [*.*]
goto e
:m
cd /d %1
dir /b /l /a-d %3 >c:\prog
cd /d %2
dir /b /l /a-d %3 >c:\list
cd /d c:\
f:\lackof.exe >lack
cd /d %1
cd /d %2
@echo on
for /f %%f in (c:\lack) do copy %1\%%f
@echo off
del c:\prog
del c:\list
del c:\lack
:e
其中lackof.exe到我的资源http://download.csdn.net/zhao4zhong1里面下载 --------------------编程问答--------------------
--------------------编程问答-------------------- 使用DOS外部命令
'全VB语句写的,拷贝文件,不覆盖,不提示
Private Sub Command1_Click()
FldCopy "c:\222\*.xls", "d:\111"
End Sub
Private Sub FldCopy(ByVal a As String, ByVal b As String)
Dim f1() As String, f2() As String, f As Boolean
Dim f2z As String, iph As String, ifn As String
ifile a, f1, f
If f Then Exit Sub
iph = Left(a, InStrRev(a, "\"))
ifn = Mid(a, InStrRev(a, "\"))
ifile b & ifn, f2, f
f2z = "?" & Join(f2, "?")
For i = 0 To UBound(f1)
If InStr(f2z, "?" & f1(i)) <> 0 Then
Else
FileCopy iph & f1(i), b & "\" & f1(i)
End If
Next
End Sub
Private Sub ifile(ByVal a As String, b() As String, f As Boolean)
Dim tmp As String
tmp = Dir(a)
If tmp = "" Then f = True: Exit Sub
Do While tmp <> ""
ReDim Preserve b(i)
b(i) = tmp
tmp = Dir
i = i + 1
Loop
End Sub
补充:VB , 基础类