我有大约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 )
答案 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/*' \;