【已解决】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: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)
回复 2# lixiaolong
测试成功!,谢谢李小龙!{:face (293):}
页:
[1]