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

[AU3基础] 请教大侠!如何自动获取U盘盘符并打开检测到的盘符啊!(已解决)

 火.. [复制链接]
发表于 2012-1-17 13:54:30 | 显示全部楼层 |阅读模式
本帖最后由 surongfu 于 2012-6-26 08:41 编辑

请教大侠!如何自动获取U盘盘符并打开已经检测到的盘符

评分

参与人数 1金钱 -10 收起 理由
afan -10

查看全部评分

发表于 2012-1-17 15:16:30 | 显示全部楼层
dos下面的  fsutil fsinfo drives 配合  fsutil fsinfo drevetype X: 可以得到盘符的类别  以前学批处理的时候学的   AU3应该有其它更稳定的方法得到结果...留名期待答案
发表于 2012-1-17 15:31:29 | 显示全部楼层
简单几句就可以实现
$Drive = DriveGetDrive("REMOVABLE")
If IsArray($Drive) Then 
        For $i = 1 To $Drive[0]
                ShellExecute($Drive[$i])
        Next
EndIf

评分

参与人数 2金钱 +30 收起 理由
gugugu2859 + 20 我很赞同
yinbinly + 10 我很赞同

查看全部评分

发表于 2012-1-17 15:41:29 | 显示全部楼层
3楼正解,学习一下
 楼主| 发表于 2012-1-17 16:38:34 | 显示全部楼层
谢谢三楼的兄弟
 楼主| 发表于 2012-1-17 16:43:21 | 显示全部楼层
三楼的兄弟,如果没发现“可移动设备”可以让au3提示一下吗?比如说提示“未发现可移动设备"
发表于 2012-1-17 16:52:18 | 显示全部楼层
三楼的兄弟,如果没发现“可移动设备”可以让au3提示一下吗?比如说提示“未发现可移动设备"
surongfu 发表于 2012-1-17 16:43



    天啊,,,,,,不就是在If里加个Else的判断?
大哥, 你注册时间比我还早得多, 在学什么呀!
发表于 2012-1-17 17:00:34 | 显示全部楼层
回复 1# surongfu


    3楼正解。顺便建议你多看看工具包里自带的示例“高级”程序GUI,里面有不少实用脚本函数
发表于 2012-1-17 17:53:09 | 显示全部楼层
如果2个U盘呢?
发表于 2012-1-17 18:24:55 | 显示全部楼层
回复 6# surongfu


    Dim $Var
$Drive=DriveGetDrive("removable")
If $Drive = 0 Then
MsgBox(0, "提示", "没有插入U盘")
Exit
EndIf
For $i = 1 To $Drive[0]
$Var=StringUpper($Drive[$i])
$s = StringUpper($Drive[1])
Next
MsgBox(0, "提示", "你的U盘是:"&$s)

评分

参与人数 1金钱 +10 收起 理由
yinbinly + 10 很棒的见解

查看全部评分

发表于 2012-1-18 08:48:46 | 显示全部楼层
这是我以前找的,忘记在哪看到的了
可以显示的内容较多
GetPartionMsg("usb", 0)        ;GetPartionMsg 的第一个参数可以是 USB、IDE 等;如果不带任何参数,则是检测所有磁盘分区
                                                ;第二个参数可以是 1、0,1 表示 TRUE,0 表示 FALSE;如果第一个参数为空,则第二个必需为 1
 
Func GetPartionMsg($Interface, $b)
        $objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
        $colItems = $objWMIService.ExecQuery ("Select * from Win32_LogicalDiskToPartition")
                
        $DiskInfo = ""
        $DiskInfoCombo = ""
        For $objItem In $colItems
                                MsgBox(64,"",$objItem.Dependent)
                $DiskFH = StringLeft(StringRight($objItem.Dependent, 3), 2)
                                $PartNum = QueryDiskNum($DiskFH)
                $PartMsg = QueryPartitionVolume($DiskFH)
                If $Interface <> "" Then
                        If $b = 1 Then
                                If StringMid($PartNum, 2, 3) = $Interface Then
                                        $DiskInfo = $DiskInfo & $PartNum & $DiskFH & $PartMsg & @CRLF
                                EndIf
                        ElseIf $b = 0 Then
                                If StringMid($PartNum, 2, 3) <> $Interface Then
                                        $DiskInfo = $DiskInfo & $PartNum & $DiskFH & $PartMsg & @CRLF
                                EndIf
                        EndIf
                Else
                        $DiskInfo = $DiskInfo & $PartNum & $DiskFH & $PartMsg & @CRLF
                EndIf
        Next
        MsgBox(64, "磁盘信息", $DiskInfo)
EndFunc   ;==>GetPartionMsg
 
Func QueryDiskInterface($n)
        $objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
        $colItems = $objWMIService.ExecQuery ("Select * from Win32_DiskDrive Where Index=" & $n)
        For $objItem In $colItems
                Return $objItem.InterfaceType
        Next
EndFunc   ;==>QueryDiskInterface
 
Func QueryPartitionVolume($v)
        $objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
        $colItems = $objWMIService.ExecQuery ("Select * from Win32_LogicalDisk Where DeviceID='" & $v & "'")
        For $objItem In $colItems
                Return $objItem.VolumeName & "" & $objItem.FileSystem & "_" & CalcKMG($objItem.Size) & "_" & $objItem.Description
        Next
EndFunc   ;==>QueryPartitionVolume
 
Func QueryDiskNum($d)
        $objWMIService = ObjGet("winmgmts:\\.\root\cimv2")
        $colItems = $objWMIService.ExecQuery ("Associators of {win32_LogicalDisk.DeviceID='" & $d & "'} where ResultClass = Win32_DiskPartition")
        For $colItem In $colItems
                Return "(" & QueryDiskInterface($colItem.DiskIndex) & ":hd" & $colItem.DiskIndex & ")" 
        Next
EndFunc   ;==>QueryDiskNum
 
Func CalcKMG($n)
        If $n < 1024 Then
                Return $n & "Byte" 
        ElseIf $n < 1048576 Then
                Return Round($n / 1024, 2) & "KB" 
        ElseIf $n < 1073741824 Then
                Return Round($n / 1048576, 2) & "MB" 
        Else
                Return Round($n / 1073741824, 2) & "GB" 
        EndIf
EndFunc   ;==>CalcKMG
 楼主| 发表于 2012-1-18 08:56:55 | 显示全部楼层
谢谢10楼和3楼的兄弟,3楼的兄弟没发U盘不提示,10楼的兄弟会提示但不会打开,我自己把他们代码整合了一下:

Dim $Var
$Drive=DriveGetDrive("removable")
If $Drive = 0 Then
MsgBox(0, "提示", "没有插入U盘")
Exit
EndIf
For $i = 1 To $Drive[0]
                ShellExecute($Drive[$i])
        Next




这样我测试了一下,没发现U盘会提示,有U盘直接打开,不知道这样整合对吗?
发表于 2012-2-2 13:31:17 | 显示全部楼层
回复 3# 风行者
学习了,谢谢,如果有两个U盘会出现什么情况。
发表于 2012-2-2 19:17:27 | 显示全部楼层
本帖最后由 netegg 于 2012-2-2 19:18 编辑

回复 13# ndyzx
你不会自己动手翻翻帮助呀,至于这么个问题也问这么多吗?
如果帮助没有,你问也就问了,关键是都写着呢
发表于 2012-2-6 13:14:29 | 显示全部楼层
一直都很关注U盘的东东。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-19 15:35 , Processed in 0.081489 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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