apoorman1986 发表于 2012-3-28 23:45:49

【已解决】filecopy无法实现复制不覆盖?

本帖最后由 apoorman1986 于 2012-3-29 13:43 编辑

{:1_605:}今晚闲着,想把批处理COPY转为AU3,发现用FILECOPY命令标志0或8大部分都失败(文件比较少,或名字比较短成功过!)难道一定要用AU3调成CMD命令才行?

批处理的命令是这样写的:
echo N|copy F:\LOG\*.log E:\SOFT\ /-y
我用AU3这样测试:
FileCopy("F:\LOG\*.log","E:\soft\",0)
F:\LOG文件夹放了N个.LOG文件,E:\SOFT有F:\LOG中的其中若干个文件.
为了节省时间,E:\SOFT中存在的文件就不用覆盖了,跳过。
我用FILECOPY的0和8标志试了N次,都不行,不知道为什么,难道是写的不对,还是一定要用CMD命令才能?求解。
用FILECOPY标志1+8肯定成功,但达不到想要的效果,特来求助!

lixiaolong 发表于 2012-3-29 00:56:53

本帖最后由 lixiaolong 于 2012-3-29 00:58 编辑

测试了FILECOPY的0.

这是我的理解.
比如F:\LOG\*.log找到了5个文件,它开始检查第一个文件,E:\SOFT文件夹下是否已存在.
如果没有复制第一个文件到E:\SOFT文件夹下,再检查第二个文件....

如果发现了已存在的文件,它不再检查第二个文件了,所以不成功.

我想FILECOPY的0的动作应该是这样.

$search = FileFindFirstFile("F:\LOG\*.log")

; 检查搜索是否成功
If $search = -1 Then
        Exit
EndIf

While 1
        $file = FileFindNextFile($search)
        If @error Then ExitLoop

;~   MsgBox(4096, "文件:", $file)
        If Not FileExists("E:\soft\" & $file) Then
                FileCopy("F:\LOG\*.log", "E:\soft\")
        Else
                ExitLoop
        EndIf
WEnd

; 关闭搜索句柄
FileClose($search)


你把它改成这样就是你要的效果了.

$search = FileFindFirstFile("F:\LOG\*.log")

; 检查搜索是否成功
If $search = -1 Then
        Exit
EndIf

While 1
        $file = FileFindNextFile($search)
        If @error Then ExitLoop

        FileCopy("F:\LOG\" & $file, "E:\soft\" & $file)
WEnd

; 关闭搜索句柄
FileClose($search)

apoorman1986 发表于 2012-3-29 12:06:10

回复 2# lixiaolong


   测试成功!,谢谢李小龙!{:face (293):}
页: [1]
查看完整版本: 【已解决】filecopy无法实现复制不覆盖?