找回密码
 加入
搜索
查看: 8342|回复: 14

[效率算法] 已解决——关于au3删除指定字符开头,或排除指定字符开头的目录和文件

  [复制链接]
发表于 2011-9-28 22:24:11 | 显示全部楼层 |阅读模式
本帖最后由 zlmyongheng 于 2011-10-27 20:05 编辑

想实现这样的功能:
如一个目录下有
如下字符开头的目录
tts_dad_dad3331331333333123
很多个开头都是tts_dad的目录后面的序列数字都是随机的
而又有一些如下字符开头的目录
msil_didss_23def3322333232321dsads
也有很多个msil_didss开头的目录后面的23def*序数每次也都不同
现在想把所有的tts_dad开头的目录全部删除,保留msil字符开头的目录
应该怎样实现
因为目录太多,而且每次安装产生的结尾都是随机数的,应该怎样做到删除tts开头的目录,保留msil开头的目录
同样文件也是的
bbse_d_323252325.txt
fffst_d_3b525343333.txt
想删除bbse开头的文件,保留fffst_d开头的文件,应该怎么实现
发表于 2011-9-28 22:35:22 | 显示全部楼层
遍历tts_ bbse开头的文件然后删除就可以了!
发表于 2011-9-28 23:29:22 | 显示全部楼层

放到要删除的目录里运行

本帖最后由 gzh888666 于 2011-9-29 01:09 编辑
#Include <File.au3>
#Include <Array.au3>

delete_Dir("tts_")
delete_File("bbse_")

Func delete_File($zf)
$File =  _FileListToArray(@ScriptDir, "*" ,1)
For $i=1 To UBound($File) - 2
        If StringLeft($File[$i],StringLen($zf))= $zf  Then FileDelete (@ScriptDir&""&$File[$i])
Next
EndFunc

Func delete_Dir($zf)
$Dir =  _FileListToArray(@ScriptDir, "*" ,2)
For $i=1 To UBound($Dir) - 2
        If StringLeft($Dir[$i],StringLen($zf))= $zf  Then DirRemove (@ScriptDir&""&$Dir[$i])
Next
EndFunc
发表于 2011-9-29 00:03:25 | 显示全部楼层
回复 3# gzh888666


   
#Include <File.au3>
#Include <Array.au3>
delet_File("bbse_")
delet_Dire("tts_")
Func delet_File($zf)
$File =  _FileListToArray(@ScriptDir, "*" ,1)
For $i=1 To UBound($File) - 2
        If StringLeft($File[$i],StringLen($zf))= $zf  Then FileDelete (@ScriptDir&"\"&$File[$i])
Next
EndFunc

Func delet_Dire($zf)
$Dire =  _FileListToArray(@ScriptDir, "*" ,2)
For $i=1 To UBound($Dire) - 2
        If StringLeft($Dire[$i],StringLen($zf))= $zf  Then FileDelete (@ScriptDir&"\"&$Dire[$i])
Next
EndFunc
 楼主| 发表于 2011-9-29 06:43:35 | 显示全部楼层
本帖最后由 zlmyongheng 于 2011-9-29 06:45 编辑

谢谢,这个问题困扰了好久,在帮助里又不知道查什么函数
顺便问一下是否一定要放在要删除的目录里才能有用,我自己也开始试一下
StringLen($zf))= $zf  这句不是很懂
发表于 2011-9-29 13:07:22 | 显示全部楼层
谢谢,这个问题困扰了好久,在帮助里又不知道查什么函数
顺便问一下是否一定要放在要删除的目录里才能有用 ...
zlmyongheng 发表于 2011-9-29 06:43


要删除目录由_FileListToArray第一个参数决定,看帮助就可以明白的。$zf是字符串的存放变量而已!
 楼主| 发表于 2011-10-2 14:18:32 | 显示全部楼层
在问一下,为什么要 UBound($File) - 2
UBound($File)是获得整个数组维度,一2不就是变少了吗

看他的例子上没有-2,不知道能否告知,现在也要理解上
 楼主| 发表于 2011-10-2 14:37:52 | 显示全部楼层
试了一下,少删除了一个目录是不是就和-2有关
发表于 2011-10-2 16:08:22 | 显示全部楼层
把文字组织好,问题说清楚,如果上代码,就把代码格式整理好

看不懂呀,纠结
 楼主| 发表于 2011-10-2 20:36:47 | 显示全部楼层
就是上面他们给的代码,删除时少删了一个
发表于 2011-10-2 21:32:42 | 显示全部楼层
就是上面他们给的代码,删除时少删了一个
zlmyongheng 发表于 2011-10-2 20:36


自己要多动手检测。
#Include <File.au3>
#Include <Array.au3>

delete_Dir("复件")
delete_File("复件")

Func delete_File($zf)
$File =  _FileListToArray(@ScriptDir, "*" ,1)
MsgBox(0,"",UBound($File))
For $i=1 To UBound($File) - 2
        If StringLeft($File[$i],StringLen($zf))= $zf  Then FileDelete (@ScriptDir&""&$File[$i])
Next
EndFunc

Func delete_Dir($zf)
$Dir =  _FileListToArray(@ScriptDir, "*" ,2)
MsgBox(0,"",UBound($Dir))
For $i=1 To UBound($Dir) - 2
        If StringLeft($Dir[$i],StringLen($zf))= $zf  Then DirRemove (@ScriptDir&""&$Dir[$i])
Next
EndFunc
 楼主| 发表于 2011-10-2 22:17:45 | 显示全部楼层
我就是想问一下,为什么用uBound($File))获得数组个数,还要-2,不减不正好是目录的个数,正好把目录删去,-2有什么作用,是不是有特殊保留的作用,试的方法我自己试出了,想理解上,下次再用就好用些了
发表于 2011-10-4 21:25:27 | 显示全部楼层
我就是想问一下,为什么用uBound($File))获得数组个数,还要-2,不减不正好是目录的个数,正好把目录删去, ...
zlmyongheng 发表于 2011-10-2 22:17

不减不正好是目录的个数

你检测了吗?没有检测就不要乱说!
 楼主| 发表于 2011-10-27 20:02:50 | 显示全部楼层
检查了,发现少删除了,一个-1正好把不需要的去掉了,为什么要-2也搞清楚了,数组第一个值存放的是数组的个数,谢谢,学到不少东西
发表于 2011-12-4 19:34:26 | 显示全部楼层
我也想要这方面的资料,不过我想要的和你的不同
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-17 03:40 , Processed in 0.238818 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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