xiaogou5852 发表于 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

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

谢谢各位了。

love5173 发表于 2011-5-7 00:19:37

你发代码,别人给你修改多快,如果只是2级目录的话是比较简单的

netegg 发表于 2011-5-7 03:10:07

本帖最后由 netegg 于 2011-5-7 03:12 编辑

楼主那意思还不如不意思,看得糊里糊涂的,怎么叫排除,排除了之后怎么又出来保持目录结构了
看楼主下面的图示,是不是要把bb文件整个挪到一个新建的aa文件夹下,然后原来的父文件夹中再创建个aa文件夹,然后是什么就不知道了

kingfirekkk 发表于 2011-5-7 08:27:44

源码加描述,一般会容易搞一些。。。

redapple2008 发表于 2011-5-7 10:52:23

同意楼上的{:face (332):}

xiaogou5852 发表于 2011-5-7 12:14:37

因为该目录下有很多子文件夹,我是想在所有子文件夹下创建AA文件夹,然后把BB里的文件和文件夹移动到刚创建的AA文件夹里,但是BB里不能有AA文件夹,不然会出错的,

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

   批处理代码如下:

@echooff
(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代码写得太乱,和基本实现不了,所以就不发了,还请大家帮帮,忙。

netegg 发表于 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) < 1Then 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不知道这样是不是你想要的
页: [1]
查看完整版本: 遍历目录建立文件夹并移动文件。。