如何编写批处理代码复制文件夹A中的文件及文件夹到文件夹B,要求复制所有文件及目录,若重名自动重命名!

如何编写批处理代码复制文件夹A中的文件及文件夹到文件夹B,要求复制所有文件及目录,若文件夹B中已存在A中的文件及目录则自动重命名为,“原文件名+(1)”、“原文件名(2)”……

现在流行autoit自动化脚本 写个给你看看吧

#include <File.au3>
$src = "d:\a"
$tag = "d:\b"
$n = 0;
$src_list = _FileListToArray($src, "*")
For $i = 1 To $src_list[0]
If FileExists($tag & "\" & $src_list[$i]) Then
$n += 1
If StringInStr(FileGetAttrib($src & "\" & $src_list[$i]), "D") Then
DirCopy($src & "\" & $src_list[$i], $tag & "\" & $src_list[$i] & "(" & $n & ")")
Else
$p = StringInStr($src_list[$i], ".", 0, -1)
If Not $p Then
FileCopy($src & "\" & $src_list[$i], $tag & "\" & $src_list[$i] & "(" & $n & ")")
Else
$filename = StringLeft($src_list[$i], $p-1) & "(" & $n & ")" & StringMid($src_list[$i], $p)
FileCopy($src & "\" & $src_list[$i], $tag & "\" & $filename)
EndIf
EndIf
Else
If StringInStr(FileGetAttrib($src & "\" & $src_list[$i]), "D") Then
DirCopy($src & "\" & $src_list[$i], $tag)
Else
FileCopy($src & "\" & $src_list[$i], $tag)
EndIf
EndIf
Next追问

(本人小白)如何生产可执行程序,或脚本运行文件?

追答

安装 autoit 3.3.6.1以上汉化版 编译成 exe

追问

谢谢!我测试了下,它可以复制文件过去,但不能复制文件夹。我想要的是:可以复制文件和文件夹,及文件夹中所有的文件及文件夹。且如果发现有重名则自动重命名为:原文件名+(1)、+(2)、+(3)……以此类推!例如:运行程序复制a.xls发现有重名则为a(1).xls,再次运行时发现已有a.xls和a(1).xls 那么就命名为a(2).xls 以此往后a(3).xls、a(4).xls、a(5).xls……a(n).xls

追答

原来是这样 好吧 我再修改一下 逻辑

改好了 这回可以了

#include
$src = "d:\a"
$tag = "d:\b"

$src_list = _FileListToArray($src, "*", 0)
For $i = 1 To $src_list[0]
If FileExists($tag & "\" & $src_list[$i]) Then
If StringInStr(FileGetAttrib($src & "\" & $src_list[$i]), "D") Then
$n = 1
While FileExists($tag & "\" & $src_list[$i] & "(" & $n & ")")
$n += 1
WEnd
DirCreate($tag & "\" & $src_list[$i] & "(" & $n & ")")
DirCopy($src & "\" & $src_list[$i], $tag & "\" & $src_list[$i] & "(" & $n & ")", 1)
Else
$p = StringInStr($src_list[$i], ".", 0, -1)
If Not $p Then
$n = 1
While FileExists($tag & "\" & $src_list[$i] & "(" & $n & ")")
$n += 1
WEnd
FileCopy($src & "\" & $src_list[$i], $tag & "\" & $src_list[$i] & "(" & $n & ")")
Else
$n = 1
$filename = StringLeft($src_list[$i], $p-1) & "(" & $n & ")" & StringMid($src_list[$i], $p)
While FileExists($tag & "\" & $filename)
$n += 1
$filename = StringLeft($src_list[$i], $p-1) & "(" & $n & ")" & StringMid($src_list[$i], $p)
WEnd
FileCopy($src & "\" & $src_list[$i], $tag & "\" & $filename)
EndIf
EndIf
Else
If StringInStr(FileGetAttrib($src & "\" & $src_list[$i]), "D") Then
DirCreate($tag & "\" & $src_list[$i])
DirCopy($src & "\" & $src_list[$i], $tag & "\" & $src_list[$i], 1)
Else
FileCopy($src & "\" & $src_list[$i], $tag)
EndIf
EndIf
Next
TrayTip("复制完成", "谢谢使用", 5, 1)
Sleep(3000)

温馨提示:答案为网友推荐,仅供参考
相似回答