我想做一些简单的事情(我想......)
我有类似这样的事情:
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 会话期间保留。
- 变量- 提取变量的一部分(子字符串)。