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

Batch file 批处理文件:两个文件夹之间的条件复制,batch-file,Batch File,我需要你的帮助。我正在寻找一个批处理文件做一个检查特定的操作。让我解释一下情况: 我有两个文件夹(C:\Folder1和C:\Folder2) 我想知道是否可能有一个批处理文件,对于放入Folder1中的每个*.TXT文件,都会将该文件的副本放入文件夹2(在比较两个文件夹并确保Folder2中不存在该文件后) 是否也可能有一个计数器,因为当另一个TXT文件放入Folder1时,它只应将该文件复制到Folder2(而不是之前添加到文件夹中的所有TXT文件) 最简单的方法是使用。它已经只会复制更改过

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

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


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

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

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

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

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

添加引号以涵盖@dbenham识别的可能问题这将把
c:\folder2
中不存在但当前文件夹中存在的任何txt文件复制到
c:\folder2

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

添加引号以涵盖@dbenham发现的可能问题很容易将Sean的答案扩展为从folder1而不是当前目录复制。我还在路径周围添加了引号,这样空格和特殊字符(如
&
)就不会破坏代码

@echo off
for %%F in ("c:\folder1\*.txt") do if not exist "c:\folder2\%~nxF" copy "%%F" "c:\folder2"
您甚至不需要批处理文件。如果将所有双百分比更改为单百分比,则只需从命令行运行FOR命令

我也喜欢shf301的建议,尽管有太多的机器人复制选项,在你习惯之前可能会让人困惑。我相信你想要的是:

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

很容易将Sean的答案扩展为从folder1而不是当前目录复制。我还在路径周围添加了引号,这样空格和特殊字符(如
&
)就不会破坏代码

@echo off
for %%F in ("c:\folder1\*.txt") do if not exist "c:\folder2\%~nxF" copy "%%F" "c:\folder2"
您甚至不需要批处理文件。如果将所有双百分比更改为单百分比,则只需从命令行运行FOR命令

我也喜欢shf301的建议,尽管有太多的机器人复制选项,在你习惯之前可能会让人困惑。我相信你想要的是:

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

+1,但您的IF NOT EXIST目标应该用引号括起来,以防止空格和特殊字符。@dbenham,这样更好。我想我花了太多时间在8.3文件名+1上,但是如果不存在目标,应该用引号括起来,以防止空格和特殊字符。@dbenham,这样会更好。我想我花了太多时间在8.3文件名上了非常感谢确实是dbenham非常感谢确实是dbenham