batch-file - 如何将文件复制到编号为(0001,0002,0003)的父目录中具有相同名称(pic)的子目录
问题描述
基本上我使用批处理脚本来组织具有相同名称的目录中的文件(文件:0001 -> 文件夹 0001)并在每个目录中创建子目录 -(/folder0001/pic),现在我正在尝试处理每个目录中的 jpg 文件( 0001/图片,0002/图片)。我尝试使用 xcopy,但它不起作用。
这是我使用的批处理脚本。
@echo off
for %%i in (*) do (
if not "%%~ni" == "organize" (
md "%%~ni\keep_config\pic" && move "%%~i" "%%~ni\keep_config" "%%~d";
)
)
我尝试使用此脚本进行复制。
xcopy /s C:\...\New folder\0001\keep_config\pic C:...\New folder\background_main L.jpg
解决方案
你的问题很模糊:
- 最初的布局到底是什么,结果应该是什么?
- 我们是将一个文件复制
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
推荐阅读
- javascript - jVectorMap 通过单击最多更改 2 个区域的颜色
- javascript - 一两分钟后 JQuery 不起作用
- graphql - 具有来自输入类型的动态键的对象的 Apollo-GraphQL 字段类型
- c# - 为什么我的统一动画会消失一帧?
- database - SQLALCHEMY: How to define a foreign key column that can reference multiple tables
- python - 在 Pandas 中绘制具有不同比例的列
- python - linear regression on time series in python
- http-headers - 最后修改的标头时间戳不可靠?
- laravel - 目标类 [App\Http\Controllers\studentscon] 不存在
- php - 自动从 github 拉取服务器中的代码