将文件从相似的多个文件夹复制到其每个子文件夹中

时间:2019-09-19 18:23:20

标签: robocopy xcopy

我想使用批处理文件将文件夹中的文件复制到Windows服务器上的备份文件夹(OLD)中。我想对多个文件夹执行此操作。

例如,我有多个文件夹,命名如下: C:\ A01 C:\ A02 C:\ A03 ... C:\ A50

在这里我将其昵称为A ##。

每个文件夹都有数百个文件。

然后每年在更新它们之前,我将每个A ##的文件复制到一个名为OLD的备份文件夹中,因此我要备份去年的文件。然后,我通过另一个手动过程分别将新文件复制到C:\ A ##。

因此将存在以下文件夹: C:\ A01 \ OLD C:\ A02 \ OLD C:\ A03 \ OLD ... C:\ A50 \ OLD

当我将文件复制到OLD文件夹时,我会保留每个文件的最新版本。但是后来我以后手动复制的文件将被覆盖在C:\ A ##文件夹中,成为今年的文件,而C:\ A ## \ OLD将包含去年的文件。

我该如何编写脚本,以便它将每个C:\ A ##文件夹的所有文件复制到各自的\ OLD文件夹中?

我假设我要在要复制的路径中使用一个变量。

我可以使用Robocopy或Xcopy。

1 个答案:

答案 0 :(得分:0)

在脚本文件中

@echo off
cd c:\
for /f "usebackq delims=:" %%a IN (`dir /AD /B ^| FINDSTR /I /R "A[0-9]*"`) DO (
 @mkdir "%%a\OLD" 
 xcopy "%%a\*.*" "%%a\OLD\" /ECIFHRY /D
)

仅将更新的文件(/ D)复制到OLD子文件夹。

如果要保留文件的ACL,请使用/ ECIFHRKOXY

我建议您在测试文件夹中对其进行测试,您可以使用此命令直接在外壳中生成

@mkdir c:\test76
cd c:\test76
For /L %a IN (1,1,10) DO @mkdir A%a && echo "the quick brown fox jumps over the lazy dog">A%a\file.txt