标题: [文件操作] 【已解决】批处理怎样判断最后一级子目录,批量移动到当前目录? [打印本页]
作者: thp2008 时间: 2022-9-15 23:26 标题: 【已解决】批处理怎样判断最后一级子目录,批量移动到当前目录?
本帖最后由 thp2008 于 2022-9-16 11:37 编辑
例如我的当前目录是 E:\Lever1\
E:\Lever1\当前目录的子目录大概是这样个情况
E:\Lever1\Le02\Le03\Le04\le05\le06\*.MP4
E:\Lever1\Ae02\Ae03\Ae04\Ae05\*.GIF
E:\Lever1\Be02\Be03\Be04\*.MP4
E:\Lever1\Ce02\Ce03\Ce04\Ce05\*.GIF
E:\Lever1\De02\De03\*.MP4
也就是,当前目录下,有很多级子目录,子目录的层级不固定,文件夹名称有中文及空格,但只有最后一级子目录有文件,文件类型为两种:*.mp4和*.Gif以这个为条件判断,就是批处理,自动根据有指定文件类型的判断它最后所在的文件夹层级,然后批量自动将这些文件夹及文件夹下的所有文件,移动到当前目录下。
例如上面的例子,批处理自动将:le06\ Ae05\ Be04\ Ce05\ De03\ 这最后一级文件夹及文件夹下的文件,移动到当前目录 E:\Lever1\下。移除完毕后,将当前目录下的,所有空目录,全部删除掉。
上面为了讲清楚,我说的比较细,概括来讲,就是我在当前目录一运行这个批理,就自动检测最后一级文件夹,将所有的最后一级文件夹,移动到当前目录,最后,删除所有空目录。
不知道,我讲清楚没有,看看有没有什么好方法可以实现,感谢大神帮助!
作者: qixiaobin0715 时间: 2022-9-16 09:20
- @echo off
- for /f "delims=" %%a in ('dir /s /b /ad') do (
- if exist "%%a\*.MP4" (
- md "%%~nxa" 2>nul
- copy "%%a\*.*" "%%~nxa\"
- ) else if exist "%%a\*.GIF" (
- md "%%~nxa" 2>nul
- copy "%%a\*.*" "%%~nxa\"
- )
- )
- for /f "delims=" %%a in ('dir /s /b /ad^|sort /r') do rd "%%a" 2>nul
复制代码
未测试
作者: Batcher 时间: 2022-9-16 09:37
回复 2# qixiaobin0715
copy 应该换成 move 吧
作者: qixiaobin0715 时间: 2022-9-16 09:54
回复 3# Batcher
对对!!!
作者: Batcher 时间: 2022-9-16 10:58
回复 1# thp2008 - @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /s /a-d *.mp4 *.gif') do (
- if exist "%%~dpi" (
- set "ThisFolder=%%~dpi"
- set "ThisFolder=!ThisFolder:~0,-1!"
- move "!ThisFolder!" "%~dp0"
- )
- )
- for /f "delims=" %%a in ('dir /b /s /ad ^| sort /r') do (
- rd "%%a" 2>nul
- )
复制代码
作者: thp2008 时间: 2022-9-16 11:36
感谢qixiaobin0715 和 Batcher 两位老大的帮忙,我测试了,两位的都可以满足要求,成功了。
Batcher 的还可以支持个别,有.mp4和.Gif的下面还有个子目录的情况。太好了。
膜拜两位,我来好好研究一下。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |