标题: [文件操作] [已解决]批处理怎样在很多目录中过滤出没有子目录的目录并归档? [打印本页]
作者: MRhythm 时间: 2020-11-20 00:14 标题: [已解决]批处理怎样在很多目录中过滤出没有子目录的目录并归档?
本帖最后由 MRhythm 于 2020-11-20 18:34 编辑
公共的共享空间, 本来是用于存放一些周报等信息的, 但是由于操作不是很规范, 目录结构十分混乱, 比如A目录下可能有B目录, B目录下又有C目录
比如
A\
A\A1.TXT
A\A2.TXT
A\A3.TXT
A\B\
A\B\B1.TXT
A\B\B2.TXT
各个目录基本没有重名, 现在需求是使用批处理, 找出没有子目录的目录, 并将该目录移动到其他地方归档. 用for反复尝试一下效果都不是很理想.
简单分析一下就是
需要处理一个大目录, 层级, 文件数量, 结构均不清楚
如果某个目录下没有子目录, 或者为空, 则移动该目录到指定路径
如果某个目录下有子目录, 则不进行任何操作
作者: Batcher 时间: 2020-11-20 00:58
回复 1# MRhythm
根据不同的场景,请分别举例说明哪些移动哪些不移动。
作者: MRhythm 时间: 2020-11-20 01:23
其实就是把没有子目录的目录移动一下就可以了
只要符合"没有子目录"这个条件, 就一并移走. 批处理本身造成的目录变化不在考虑范围, 能一次移走最好, 不能的话无非多运行几次
作者: qixiaobin0715 时间: 2020-11-20 08:34
本帖最后由 qixiaobin0715 于 2020-11-20 08:37 编辑
参考
http://www.bathome.net/viewthrea ... &from=favorites
2楼代码
按自己的需求修改
作者: MRhythm 时间: 2020-11-20 10:54
本帖最后由 MRhythm 于 2020-11-20 11:06 编辑
- @echo off
- setlocal enabledelayedexpansion
- cls
- set /p sourcePath="请键入需要处理的根目录并回车, 例如 d:\files:"
- set /p outputPath="请键入输出压缩文件的目录并回车, 例如 d:\output:"
-
- set mark=0
-
- for /f %%i in ('dir /b /s /ad %sourcePath%') do (
- set mark=0
- for /f %%o in ('dir /b /ad %%i') do (set mark=1)
- if !mark!==0 (echo 正在处理%%i
- "C:\Program Files\WinRAR\Rar.exe" a -r o+ -ep1 %outputPath%\%%~ni %%i\*)
- )
复制代码
根据楼上提供的思路自己写了一个, 最后想了一下还是没有用移动文件这种不可逆操作, 借助winrar的打包功能来处理重名等问题
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |