文件夹复制 批处理问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 11:08:14
我的 D:\图片 文件夹下有
D:\图片\A 文件夹内有 A1.JPG 等图片
D:\图片\A\B 文件夹内有 AB1.JPG 等图片
D:\图片\A\B\C...
D:\图片\B 文件夹内有 B1.JPG 等图片
D:\图片\B\B 文件夹内有 BB1.JPG 等图片
D:\图片\B\B\C...
子文件夹层次多,同时每个文件夹里都有图片,我想把每个子文件夹中的图片复制(或移动)到 D:\图片 (或其它)文件夹内,复制后文件夹内不再包含子文件夹.如:
D:\图片\A 文件夹内有 A1.JPG 等图片
D:\图片\AB 文件夹内有 AB1.JPG 等图片
D:\图片\ABC...
D:\图片\B 文件夹内有 B1.JPG 等图片
D:\图片\BB 文件夹内有 BB1.JPG 等图片

网上的都是把所有图片复制到一个文件夹下,那样所有的图片分类就乱了。
谢谢各位的回答,你们的代码我都进行了测试,可能有高手没有看明白我的意思,真不好意思,答案中只有 小楼_春雨 的代码能满足我的要求,将所有的子文件夹提取到根目录下,同时包括了子文件夹当前的文件,谢谢!

放在D:\图片 文件夹里运行。
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir/b/s/a-d *.jpg') do (
set "str=%%~dpa"
set "str=!str:*%cd%=!"
if not "!str!"=="\" (
set "str=!str:\=!"
if not exist "!str!\" md "!str!"
move "%%a" "!str!"
))
for /f "tokens=*" %%a in ('dir/ad/b/s^|sort /r') do rd/q "%%a"
pause

打开我的电脑,进入D:\图片,搜索“*.jpg”文件,并剪切到其它位置。

不太明白你的意思...

你说的貌似有点含糊...
我琢磨着你的意思写了个,建议最好把"D:\图片"文件夹先复制到别处备份一下..

@echo off
setlocal enabledelayedexpansion
for /d /r %%a in (*) do (
set a=%%a
set a=!a:~5!
set a=!a:\=!
md "!a!">nul 2>nul
for %%b in ("%%a\*.jpg") do move /y "%%b" "!a!"
)
for %%a in (a b c