1

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

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

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

4

3 回答 3

4

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

于 2012-08-09T15:47:45.107 回答
3

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

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

添加引号以涵盖@dbenham 确定的可能问题

于 2012-08-09T15:50:17.840 回答
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
于 2012-08-09T16:02:46.023 回答