批处理文件:两个文件夹之间的条件复制

时间:2012-08-09 15:38:25

标签: batch-file

我需要你的帮助。我正在寻找一个批处理文件来检查特定的操作。让我解释一下情况:

我有2个文件夹(C:\ Folder1和C:\ Folder2)
我想知道是否有可能有一个批处理文件,对于放入Folder1的每个* .TXT文件,将该文件的副本放到文件夹2中(在比较2个文件夹并确保Folder2中不存在此文件之后) )。

是否有可能还有一个计数器,因为当另一个TXT文件被放入Folder1时,它应该只将该文件复制到Folder2(不是所有以前添加到A中的txt文件)。

3 个答案:

答案 0 :(得分:3)

最简单的方法是使用robocopy。它已经只会复制更改的文件,并有很多选项来控制它将复制的内容。它内置于Vista +中,可以在Server 2003 Resource Kit中为Windows XP / Server 2003下载。

答案 1 :(得分:3)

这会将c:\folder2中不存在但当前文件夹中存在的任何txt文件复制到c:\folder2

for %%a in (*.txt) do if not exist "c:\folder2\%%a" copy "%%a" c:\folder2

添加了引号,以涵盖@dbenham

标识的可能问题

答案 2 :(得分:1)

很容易将Sean的答案扩展到folder1而不是当前目录。我还在路径周围添加了引号,以便空格和&之类的特殊字符不会破坏代码。

@echo off
for %%F in ("c:\folder1\*.txt") do if not exist "c:\folder2\%~nxF" copy "%%F" "c:\folder2"

您甚至不需要批处理文件。如果将所有双倍百分比更改为单个百分比,则可以从命令行运行FOR命令。

我也喜欢shf301的建议,虽然有很多ROBOCOPY选项,但在你习惯之前它会让人感到困惑。我相信你想要以下内容:

robocopy /xn /xo "c:\folder1" "c:\folder2" *.txt