在 Windows 上复制特定文件夹(robocopy)

在 Windows 上复制特定文件夹(robocopy)

我想做一些简单的事情(我想......)

我有类似这样的事情:

Folder01 
  |_File1
  |_File2
  |_File3
Folder02
  |_File1
  |_File2
  |_File3
Folder03
  |_File1
  |_File2
  |_File3
Folder04
  |_File1
  |_File2
  |_File3

我只想使用 robocopy 将这些数据复制到目标(因为我需要一个日志文件并且必须指定要复制的属性)。

但由于一些限制,我无法一次性复制数据,因此必须拆分此作业(实际上大约 5000 个文件夹,3TB)。

所以我想指定“起始文件夹”和最后一个文件夹,如Folder00X(Folder001、+1、Folder100;作业应从Folder001开始,并以步骤+1复制Folder002、Folder003……Folder100)。

答案1

工作应从 Folder001 开始,步骤 +1,复制 Folder002,...Folder100

您可以使用for /l批处理文件中的循环来执行此操作。

以下批处理文件回显所需的文件夹名称列表:

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,100) do (
   rem prefix the count with leading zeros
   set "_number=00%%i"
   rem extract the last 3 digits
   echo Folder!_number:~-3!
   )
endlocal

笔记:

  • 批处理文件应位于上一级目录中Folder001
  • 用为您执行复制的命令替换该echo命令。robocopy
  • 要处理带有4数字的名称(例如 Folder1000,... Folder 2000),您需要更改批处理文件。
    • (1,1,100)用。。。来代替(1000,1,2000)
    • "_number=00%%i"用。。。来代替"_number=000%%i"
    • Folder!_number:~-3!用。。。来代替Folder!_number:~-4!

句法

FOR /L %%parameter IN (start,step,end) DO command 

钥匙

  • start :第一个数字
  • step :序列的增量
  • end :最后一个数字

来源 -对于/l


进一步阅读

  • Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
  • 启用延迟扩展- 延迟扩展将导致变量在执行时而不是在解析时扩展。
  • 对于/l- 有条件地对一系列数字执行命令。
  • - 显示、设置或删除 CMD 环境变量。使用 SET 所做的更改将仅在当前 CMD 会话期间保留。
  • 变量- 提取变量的一部分(子字符串)。

相关内容