我想使用批处理文件将文件夹中的文件复制到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。
答案 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