你的问题很模糊:
- 最初的布局到底是什么,结果应该是什么?
- 我们是将一个文件复制
pic
到每个目录中,还是将不同的文件复制到与这些文件同名的目录中?
- 还是每个编号的子文件夹都有一个文件需要在同一个子文件夹中更深地复制?
- ETC
因此,我将向您展示如何遍历目录,以便您可以自己复制文件
要在您COMMAND
的每个子文件夹上运行,c:\TestFolder
请编写:
for /D %%I in ("c:\TestFolder\*") do COMMAND
这里:
for
表示COMMAND
将执行多次
/D
指定遍历目录名,而不是文件名
%%I
是您可以在您的中使用的变量COMMAND
- 它将依次替换为每个目录
in ("c:\TestFolder\*")
意味着我们正在遍历文件夹中的每个子文件夹c:\TestFolder\
。
*
如果您希望按名称过滤子文件夹,请更改为另一个通配符
最后,替换COMMAND
为将为每个子文件夹执行一次的命令,它可以有任意参数,包括:
%%~dpnxI
将替换为子文件夹的完整路径(不带双引号)
%%~nxI
将仅替换为子文件夹的名称(不带双引号)
- 这
I
是后面的变量名for /D
,d
代表驱动器,p
-路径,n
-名称,x
-扩展名(如果有的话-文件夹可以有扩展名)
%%I in ("c:\TestFolder*") 执行命令
例子
假设我们要复制
- 文件
c:\src\first\pic\my.jpg
到c:\dst\first\pic\my.jpg
- 文件
c:\src\second\pic\my.jpg
到c:\dst\second\pic\my.jpg
- ...ETC...
假设所有文件夹都已经存在,执行此操作的命令可以是:
for /D %%I in ("c:\src\*") do copy /b /y "%%~dpnxI\pic\my.jpg" "c:\dst\%%~nxI\pic\my.jpg"
在这里,我们:
- 循环遍历内部的每个文件夹
c:\src
(即c:\src\first
,,c:\src\second
但不是c:\src\first\pic
)
- 对于第一个文件夹
%%~dpnxI
是c:\src\first
- ...并且
%%~nxI
是first
- 我们复制
SUBFOLDER_PATH\pic\my.jpg
到c:\dst\SUBFOLDER_NAME\pic\my.jpg
参考
见https://ss64.com/nt/for_d.html和https://ss64.com/nt/for.html