[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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反复尝试一下效果都不是很理想.

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

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

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

TOP

本帖最后由 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

返回列表