ywc195 发表于 2016-9-1 14:14:35

麻烦有空的大大们转换一下这段BAT为AU3

for %%a in (c d e f g h) do (
for /f "delims=" %%b in ('dir/ad/s/b "%%a:\"^|findstr /i "\UptClt$"') do (
rd /s /q "%%b" >nul 2>nul
))

nmgwddj 发表于 2016-9-2 09:01:26

搜索 C D E F G H 这几个盘符下所有文件夹,判断搜索出来的结果中是否带有 \UptClt$ 的关键字。如果有则删除该文件夹。所用到函数。

FileFindFirstFile
FileFindNextFile

根据上面两个函数中的例子搜索一个路径下的所有文件夹,得到文件夹名称后使用如下函数处理文件夹

StringInStr
DirRemove

ywc195 发表于 2016-9-2 11:43:04

有思路 但是换出来的就是不对

chamlien 发表于 2016-9-2 11:56:04

楼主的意思是用run运行dos命令?还是说用二楼的纯au3方法?

nmgwddj 发表于 2016-9-2 13:14:34

回复 3# ywc195


    贴一下代码,让大家帮忙看看错误在哪里,共同学习解决问题不是很好吗?

ywc195 发表于 2016-9-2 14:52:16

把bit改成纯AU3模式运行,

我找找看之前的代码,感觉很乱,好像就没保存了

nivisde 发表于 2016-9-2 16:47:26

#RequireAdmin
#include <File.au3>
Local $DIRS=['C:','D:','E:','F:','G:','H:']
Local $DIRS_INDEX=0
Local $FILE
Local $FILE_NAME
For $DIRS_INDEX =0 To 5
GetDirList($DIRS[$DIRS_INDEX])
Next       

Func GetDirList($DIRS_NAME)
        Local $SHEARCH=FileFindFirstFile($DIRS_NAME&"\*.*")
        If $SHEARCH<>-1 Then
                While 1
                        $FILE_NAME = FileFindNextFile($SHEARCH)
                        If @error Then ExitLoop
                        $FILE=StringSplit($FILE_NAME,".")
                        If Not @error Then ContinueLoop;如果分割 . 号不错误,文件就是带有后缀,不是文件夹,跳过
                        If StringInStr($FILE_NAME,"UptClt")<>0 Then ;如果文件名中可以查到 文字
                                DirRemove($DIRS_NAME&"\"&$FILE_NAME)
                        EndIf
                        ;_FileWriteLog("D:\DirList.LOG",$DIRS_NAME&"\"&$FILE_NAME)
                        GetDirList($DIRS_NAME&"\"&$FILE_NAME) ;递归调用,逐层进入子目录查询是否有符合的文件夹
                WEnd
                FileClose($SHEARCH)       
        EndIf
EndFunc
页: [1]
查看完整版本: 麻烦有空的大大们转换一下这段BAT为AU3