[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理怎样在很多目录中过滤出没有子目录的目录并归档?

本帖最后由 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反复尝试一下效果都不是很理想.

简单分析一下就是
需要处理一个大目录, 层级, 文件数量, 结构均不清楚
如果某个目录下没有子目录, 或者为空, 则移动该目录到指定路径
如果某个目录下有子目录, 则不进行任何操作

本帖最后由 MRhythm 于 2020-11-20 11:06 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cls
  4. set /p sourcePath="请键入需要处理的根目录并回车, 例如 d:\files:"
  5. set /p outputPath="请键入输出压缩文件的目录并回车, 例如 d:\output:"
  6. set mark=0
  7. for /f %%i in ('dir /b /s /ad %sourcePath%') do (
  8.     set mark=0
  9.     for /f %%o in ('dir /b /ad %%i') do (set mark=1)
  10.     if !mark!==0 (echo 正在处理%%i
  11.     "C:\Program Files\WinRAR\Rar.exe" a -r o+ -ep1 %outputPath%\%%~ni %%i\*)
  12. )
复制代码
根据楼上提供的思路自己写了一个, 最后想了一下还是没有用移动文件这种不可逆操作, 借助winrar的打包功能来处理重名等问题

TOP

本帖最后由 qixiaobin0715 于 2020-11-20 08:37 编辑

参考
http://www.bathome.net/viewthrea ... &from=favorites
2楼代码
按自己的需求修改
1

评分人数

TOP

其实就是把没有子目录的目录移动一下就可以了

只要符合"没有子目录"这个条件, 就一并移走. 批处理本身造成的目录变化不在考虑范围, 能一次移走最好, 不能的话无非多运行几次

TOP

回复 1# MRhythm


    根据不同的场景,请分别举例说明哪些移动哪些不移动。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表