找回密码
 加入
搜索
查看: 2368|回复: 3

[AU3基础] [已解决]请教函数 RUN 不能运行通配符的解决方案

[复制链接]
发表于 2010-7-7 19:39:32 | 显示全部楼层 |阅读模式
本帖最后由 elexy 于 2010-7-7 20:14 编辑

请教各位老师,脚本目录下有一个 MP两个字母开头,后面部分随机  的.EXE文件
举例 mp1234.exe  mpadh.exe   mp32515bnuh.exe

我试了一下,RUN("mp*.exe")是不行的,查询资料得知RUN不支持通配符,能不能用正则表达式解决这个问题? 求代码参考,谢谢!

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-7-7 20:06:16 | 显示全部楼层
;#include <Array.au3>
#include <File.au3>
$a = _FileListToArray(@ScriptDir, 'mp*.exe', 1)
;_ArrayDisplay($a, '')
If $a <> 0 Then MsgBox(0, 0, 'Run("' & $a[1] & '")')
发表于 2010-7-7 20:12:27 | 显示全部楼层
如果不想包含头文件,也可以如下:
$search = FileFindFirstFile('mp*.exe')
If $search = -1 Then Exit MsgBox(48, 0, '未搜索到')
$file = FileFindNextFile($search)
FileClose($search)
MsgBox(0, 0, 'Run("' & $file & '")')
 楼主| 发表于 2010-7-7 20:14:14 | 显示全部楼层
本帖最后由 elexy 于 2010-7-7 20:16 编辑

感谢超版 教科书式的精简解决方案。。。受教了! 我也觉得AU3能不包头尽量不包头
发表于 2010-7-7 20:26:09 | 显示全部楼层
本帖最后由 afan 于 2010-7-7 21:05 编辑

回复 4# elexy


    呵呵,还有一点未说明,这两种方法都有个弊端,不能精确匹配 “mp*.exe”,也就是说如果文件名为“m   . . .  p11.exe”之类的,在mp之间含有空格或点同样会被匹配(当然,如果有符合条件的且中间没有空格或点的会优先匹配),如果有比较严格的要求,那就最好再加上你在1#提出的正则匹配了~
$search = FileFindFirstFile('mp*.exe')
If $search = -1 Then Exit MsgBox(48, 0, '未搜索到')
While 1
        $file = FileFindNextFile($search)
        If @Error Then Exitloop
        If StringRegExp($file, '^mp.*\.exe$') Then
                MsgBox(0, 0, 'Run("' & $file & '")')
                Exitloop
        Endif
WEnd
FileClose($search)
发表于 2010-7-7 20:38:14 | 显示全部楼层
受教了!!谢谢!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-3 14:24 , Processed in 0.071510 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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