批量创建子文件夹并将父图像文件复制到新的子文件夹

时间:2015-10-15 17:30:29

标签: windows batch-file

我有大约6000个文件夹里面有图像,每个文件夹有不同数量的图像,其中一些也有0个图像。 现在我需要在每个文件夹中创建2个子文件夹,命名这些名为“medium”和“thumbs”的新子文件夹,并在这些子文件夹中复制父文件夹中存在的图像。示例:假设我有一个名为1000的文件夹,里面有10个图像,名为1.jpg,2.jpg,3.jpg等,直到10.jpg。我需要在名为1000的文件夹中创建名为“medium”的文件夹和名为“thumbs”的文件夹,并将文件夹1000中存在的图像复制到新的子文件夹“1000 / medium”和“1000 / thumbs”。我需要用6000个文件夹来做这件事。任何人都可以帮我创建一个批处理程序来执行此操作?

我正在尝试编写这样的代码:

for /r "c:\folders" %%a in (.) do ( pushd %%a -iname '*.jpg' -execdir \ bash -c 'mkdir -p thumbs medium; mv *.jpg medium; cp -t thumbs medium/*' \; ) popd )

2 个答案:

答案 0 :(得分:0)

好的...根据您的comments之一,您希望拥有Windows批处理文件。你正在用bash(Linux)混合它。

无论如何,for是个不错的选择。但是,您需要将其/D切换为枚举目录/R只是告诉for搜索子目录中的项目,但在您的情况下这不是必需的,因为您有一个平面目录结构(所有感兴趣的目录都直接位于C:\folders\

以下代码应该可以满足您的需求:

for /D %%D in ("C:\folders\*.*") do (
    pushd "%%~D"
    mkdir "medium"
    mkdir "thumbs"
    copy "*.jpg" "medium\"
    copy "*.jpg" "thumbs\"
    popd
)

如果要删除原始文件,请将copy命令替换为move

答案 1 :(得分:-1)

尝试使用find -execdir

find path/to/6000/folders -iname '*.jpg' -execdir \
    bash -c 'mkdir -p thumbs medium; mv *.jpg medium; cp -t thumbs medium/*' \;
相关问题