找回密码
 加入
搜索
查看: 5004|回复: 6

[AU3基础] 遍历目录建立文件夹并移动文件。。

  [复制链接]
发表于 2011-5-6 21:51:00 | 显示全部楼层 |阅读模式
小弟急需这样一个脚本,大致思路如下,  在一个目录下有N多子文件夹,
1. 遍历该目录下的所有子目录,并在所有子目录下建立名为AA的文件夹(排除子目录下的BB文件夹,意思就是说BB文件夹下不需要建立AA文件夹)。
2.将所有子目录下的BB文件夹移动到(不是复制)刚建立的AA文件夹下。(保持BB文件夹目录结构)。

小弟弄了很久,没效果呀。

请各位帮帮忙呀。

付目录结构如下:
原目录:
├─001
│  ├─BB
│  └─CC
├─002
│  ├─BB
│  └─CC
├─....
│  ├─BB
│  └─CC
└─100
    ├─BB
    └─CC

使用AU3处理后的目录结构:
├─001
│  ├─AA
│  │  └─BB
│  └─CC
│      └─AA
├─002
│  ├─AA
│  │  └─BB
│  └─CC
│      └─AA
├─...
│  ├─AA
│  │  └─BB
│  └─CC
│      └─AA
└─100
    ├─AA
    │  └─BB
    └─CC
        └─AA

最好能加上注释呀,让小弟知道自己写的时候哪错了。

谢谢各位了。
发表于 2011-5-7 00:19:37 | 显示全部楼层
你发代码,别人给你修改多快,如果只是2级目录的话是比较简单的
发表于 2011-5-7 03:10:07 | 显示全部楼层
本帖最后由 netegg 于 2011-5-7 03:12 编辑

楼主那意思还不如不意思,看得糊里糊涂的,怎么叫排除,排除了之后怎么又出来保持目录结构了
看楼主下面的图示,是不是要把bb文件整个挪到一个新建的aa文件夹下,然后原来的父文件夹中再创建个aa文件夹,然后是什么就不知道了
发表于 2011-5-7 08:27:44 | 显示全部楼层
源码加描述,一般会容易搞一些。。。
发表于 2011-5-7 10:52:23 | 显示全部楼层
同意楼上的
 楼主| 发表于 2011-5-7 12:14:37 | 显示全部楼层
因为该目录下有很多子文件夹,我是想在所有子文件夹下创建AA文件夹,然后把BB里的文件和文件夹移动到刚创建的AA文件夹里,但是BB里不能有AA文件夹,不然会出错的,

   我原来是用批处理来弄的,批处理可以实现这个,但是后面还有很多操作批处理实现不了,所以现在打算用AU3来操作。

   批处理代码如下:
  
@echo  off
(for /f "delims=" %%i in ('dir /b /ad /s^|findstr /v /i /c:"BB"')do (
        md ""%%i"\AA"&xcopy /e /y /h ""%%i"\BB\*" ""%%i"\AA\BB\*"
        rd  /s /q ""%%i"\BB"
))>nul 2>nul     
pause

   因为AU3代码写得太乱,和基本实现不了,所以就不发了,还请大家帮帮,忙。
发表于 2011-5-7 18:58:20 | 显示全部楼层
本帖最后由 netegg 于 2011-5-7 19:26 编辑

bb 不在子文件夹内?还有,原来bb下的子文件夹中有没有aa,bb最后要不要留着,还有,按你的图示
  ├─AA
    │  └─BB
    └─CC
        └─AA
cc底下的aa是什么,和上面的那个aa有什么关系?
_dirmove($dir)
Func _dirmove($current)
        Local $search = FileFindFirstFile($current & "\*.*")
        While 1
                Dim $file = FileFindNextFile($search)
                If @error Or StringLen($file) < 1  Then ExitLoop
                If StringInStr(FileGetAttrib($current & "" & $file), "D") And ($file <> "." Or $file <> "..") and stringinstr($current & "" & $file,'BB') Then
                    DirMove($current & "" & $file, StringReplace($current & "" & $file, 'BB', 'AA'))
                EndIf
                _dirmove($current & "" & $file)
        WEnd
EndFunc   ;==>_dirmove
不知道这样是不是你想要的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 08:06 , Processed in 0.080160 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表