IT天空

 找回密码
 加入我们

手机号码,快捷登录

搜索

[求助] 关于搜索驱动的问题

[复制链接]
23根肋骨 发表于 2021-11-24 15:17:42 | 显示全部楼层 |阅读模式

想做一个外置驱动的系统,想实现先搜索万能驱动,要是硬盘没有万能驱动,就搜索驱动总裁,在论坛上找到搜索万能驱动的au3代码,改了一下可以搜索驱动总裁,但是是2个单独的,希望哪个大神能帮看看,如何把这2个改成一个。
搜索万能驱动
#include <File.au3>

$OSV = StringTrimLeft(@OSVersion, 4)
$OSA = StringRight(@OSArch, 2)

$Drive = DriveGetDrive("all")
For $i = $Drive[0] To 1 Step -1
        Find_folder($Drive[$i])
Next

$Drive = DriveGetDrive("all")
Func Find_folder($searchdir)
        $search = FileFindFirstFile($searchdir & "\*")
        If $search = -1 Then Return -1
        While 1
                $file = FileFindNextFile($search)
                If @error Then
                        FileClose($search)
                        Return
                ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
                        $FileList = _FileListToArray($searchdir & "\" & $file, '*.ini', 1)
                        If Not @error Then
                                For $j = 1 To $FileList[0]
                                        $ini = IniRead($searchdir & "\" & $file & "\" & $FileList[$j], "Config", "OS", "")
                                        If StringInStr($ini, $OSV) And StringInStr($ini, $OSA) Then
                                                If FileExists(StringTrimRight($searchdir & "\" & $file & "\" & $FileList[$j], 4) & ".exe") Then
                                                        Run(StringTrimRight($searchdir & "\" & $file & "\" & $FileList[$j], 4) & ".exe /a")
                                                EndIf
                                        EndIf
                                Next
                        EndIf
                        Find_folder($searchdir & "\" & $file)
                EndIf
        WEnd
EndFunc



搜索驱动总裁

#include <File.au3>

$OSV = StringTrimLeft(@OSVersion, 4)
$OSA = StringRight(@OSArch, 2)

$Drive = DriveGetDrive("all")
For $i = $Drive[0] To 1 Step -1
        Find_folder($Drive[$i])
Next

$Drive = DriveGetDrive("all")
Func Find_folder($searchdir)
        $search = FileFindFirstFile($searchdir & "\*")
        If $search = -1 Then Return -1
        While 1
                $file = FileFindNextFile($search)
                If @error Then
                        FileClose($search)
                        Return
                ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
                        $FileList = _FileListToArray($searchdir & "\" & $file, '*.ini', 1)
                        If Not @error Then
                                For $j = 1 To $FileList[0]
                                        $ini = IniRead($searchdir & "\" & $file & "\" & $FileList[$j], "DrvCeoSet", "Updatesys", "")
                                        If StringInStr($ini) And StringInStr($ini) Then
                                                If FileExists(StringTrimRight($searchdir & "\" & $file & "\" & $FileList[$j], 4) & ".exe") Then
                                                        Run(StringTrimRight($searchdir & "\" & $file & "\" & $FileList[$j], 4) & ".exe /a")
                                                EndIf
                                        EndIf
                                Next
                        EndIf
                        Find_folder($searchdir & "\" & $file)
                EndIf
        WEnd
EndFunc

yinbinly 发表于 2021-11-24 16:28:51 | 显示全部楼层

活跃 78649| 技术 36| 互助 67| 钻石 2586

换个思路 打包2个EXE 运行1 检测有ED7进程退出 否则运行2
IT天空
dncsk 发表于 5 天前 | 显示全部楼层

活跃 2688| 技术 0| 互助 0| 钻石 30

  1. #include <File.au3>

  2. $OSV = StringTrimLeft(@OSVersion, 4) ;10
  3. $OSA = StringRight(@OSArch, 2) ;64

  4. $Drive = DriveGetDrive("all")
  5. For $i = $Drive[0] To 1 Step -1
  6.         Find_folder($Drive[$i]);
  7. Next

  8. For $i = $Drive[0] To 1 Step -1
  9.         Find_folder1($Drive[$i])
  10. Next

  11. Func Find_folder($searchdir)
  12.         $search = FileFindFirstFile($searchdir & "\*");搜索路径
  13.         If $search = -1 Then Return -1
  14.         While 1
  15.                 $file = FileFindNextFile($search)
  16.                 If @error Then
  17.                         FileClose($search)
  18.                         Return
  19.                 ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
  20.                         $FileList = _FileListToArray($searchdir & "\" & $file, '*.ini', 1)
  21.                         If Not @error Then
  22.                                 For $j = 1 To $FileList[0]
  23.                                         $ini = IniRead($searchdir & "\" & $file & "\" & $FileList[$j], "Config", "OS", "")
  24.                                         If StringInStr($ini, $OSV) And StringInStr($ini, $OSA) Then
  25.                                                 If FileExists(StringTrimRight($searchdir & "\" & $file & "\" & $FileList[$j], 4) & ".exe") Then
  26.                                                         Run(StringTrimRight($searchdir & "\" & $file & "\" & $FileList[$j], 4) & ".exe /a")
  27.                                                                                                                 Exit;如果存在万能驱动 就退出 不寻找驱动总裁
  28.                                                 EndIf
  29.                                         EndIf
  30.                                 Next
  31.                         EndIf
  32.                         Find_folder($searchdir & "\" & $file)
  33.                 EndIf
  34.         WEnd
  35. EndFunc

  36. Func Find_folder1($searchdir)
  37.         $search = FileFindFirstFile($searchdir & "\*")
  38.         If $search = -1 Then Return -1
  39.         While 1
  40.                 $file = FileFindNextFile($search)
  41.                 If @error Then
  42.                         FileClose($search)
  43.                         Return
  44.                 ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
  45.                         $FileList = _FileListToArray($searchdir & "\" & $file, '*.ini', 1)
  46.                         If Not @error Then
  47.                                 For $j = 1 To $FileList[0]
  48.                                         $ini = IniRead($searchdir & "\" & $file & "\" & $FileList[$j], "DrvCeoSet", "Updatesys", "")
  49.                                         If StringInStr($ini) And StringInStr($ini) Then
  50.                                                 If FileExists(StringTrimRight($searchdir & "\" & $file & "\" & $FileList[$j], 4) & ".exe") Then
  51.                                                         Run(StringTrimRight($searchdir & "\" & $file & "\" & $FileList[$j], 4) & ".exe /a")
  52.                                                 EndIf
  53.                                         EndIf
  54.                                 Next
  55.                         EndIf
  56.                         Find_folder($searchdir & "\" & $file)
  57.                 EndIf
  58.         WEnd
  59. EndFunc
复制代码

删掉了 重复的代码 添加了 一条条件退出exit运行正常的前提是 上两段代码没问题 因为我没有这方面需求 所以也就没有测试过
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

23根肋骨

3562

活跃

0

技术

0

互助
签到任务
最火的业界新闻
  • 干翻GTX 1050 Ti 锐龙6000 APU显卡大大升级
  • 小米12青春版曝光:搭载骁龙778G/780G+
  • 麒麟9000加持!华为Mate V再曝光!后置一块
  • Windows剪贴板功能获大幅强化:Edge与Chrom
  • 消息称微软下一个Win11大版本明年10月才发
  • 微星B660主板再曝光:“迫击炮”售价约1400
  • Zen3版锐龙线程撕裂者复活?32核版5970X处
  • 吸取骁龙888经验 大V称骁龙8 Gen1能效大增
  • Intel 12代酷睿处理器全曝光:从2核赛扬到1
  • 突破冯·诺依曼架构瓶颈!全球首款存算一体
炫酷的硬件Show
  • MARK 1 - 设计型 PC 与垂直风道
  • 好的大王,没问题大王
  • 振华SUPER FLOWER 铜皇450W 铜牌电源
  • 比小更小,Mini-STX装机
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
有趣的美图分享
  • 什么平台很重要
  • 谐音梗扣钱啊喂
  • 盲猜日本水产
  • 这是草莓胡萝卜的后代:胡东莓
  • 见过最阴间的车绘
  • 是很划算
  • 明明说了不想返工还是被拖来上班了
  • 一瞬间以为是地球OL出了bug
  • 真比魔杖好使
  • 不信打不准
关注官方微信
快速回复 返回顶部 返回列表