找回密码
 加入
搜索
查看: 3061|回复: 12

[AU3基础] cmd命令行取虚拟光驱数及盘符无法回显问题

[复制链接]
发表于 2020-6-7 10:16:01 | 显示全部楼层 |阅读模式
cmd命令行取虚拟光驱数及盘符无法回显问题,可以输出但取不到盘符及映像路径



#include <Constants.au3>
#include <Array.au3>
;Local $p = Run(@ComSpec & ' /c ping 6san.com','',@SW_HIDE, 15)
Local $p = Run(@ComSpec & ' /c ' & @SystemDir & "\ImDisk.exe -l",'',@SW_HIDE, 15)

Dim $i
Local $line
ProcessWaitClose($p)
$line =StringMid(StdoutRead($p), 15, 1)
MsgBox(0,"111:",$line)

For $i = 0 To $line Step 1
Local $foo = Run(@ComSpec & ' /c ' & @SystemDir & "\ImDisk.exe -l -u "&$i,'',@SW_HIDE, 16)
Local  $sDat
$dv =StringMid(StdoutRead($foo), 14, 10)

$sDat1 = StdoutRead($foo) ;获取数据流
                ;If @error Then ExitLoop
                $sDat = $sDat1

_ArrayDisplay($sDat)

MsgBox(0,$i&"STDOUT read:",$dv)
发表于 2020-6-7 11:58:45 | 显示全部楼层
Run(@ComSpec & ' /c ' & @SystemDir & "\ImDisk.exe -l",'',@SW_HIDE, 2)
你 StdoutRead 只需要$STDOUT_CHILD
 楼主| 发表于 2020-6-7 13:06:00 | 显示全部楼层
afan 发表于 2020-6-7 11:58
Run(@ComSpec & ' /c ' & @SystemDir & "\ImDisk.exe -l",'',@SW_HIDE, 2)
你 StdoutRead 只需要$STDOUT_C ...

感谢你的回复,找到原因了是缺少了,ProcessWaitClose($foo)
 楼主| 发表于 2020-6-7 13:08:58 | 显示全部楼层
afan 发表于 2020-6-7 11:58
Run(@ComSpec & ' /c ' & @SystemDir & "\ImDisk.exe -l",'',@SW_HIDE, 2)
你 StdoutRead 只需要$STDOUT_C ...

请问下a版,下面的文本怎么正则提取?我需要的是盘符,映像路径,还有映像的大小?
Drive letter: K
Image file: \??\G:\恒信2013贺岁版系统.iso
Size: 3353440256 bytes (3.123 GB), ReadOnly, Removable, Queued I/O Image File, CD-ROM.
Drive letter: L
Image file: \??\G:\莲花U盘维护系统 V2016.12.04.iso
Size: 2072610816 bytes (1.93 GB), ReadOnly, Removable, Queued I/O Image File, CD-ROM.
Drive letter: M
Image file: \??\D:\Backup\我的文档\百度云\恒信系统\jiaSP3-2013.iso
Size: 1164619776 bytes (1.085 GB), ReadOnly, Removable, Queued I/O Image File, CD-ROM.
发表于 2020-6-7 13:15:41 | 显示全部楼层
Highlight code by AuREHelper
(?mi)^Drive.+(\w)[\s\S]+?(\\\V+)[\s\S]+?(\d+)

 楼主| 发表于 2020-6-7 15:53:40 | 显示全部楼层

谢谢a版,我试下,谢谢
 楼主| 发表于 2020-6-7 16:16:23 | 显示全部楼层

a版,测试了一下,盘符正确,映像路径取出是这样的,\??\G:\恒信2013贺岁版系统.iso;映像大小取的是这个位置Size: (3353440256)这个需要转换,如果能直接取3.123 GB就不需要转换了!再次表示感谢
发表于 2020-6-7 16:21:37 | 显示全部楼层
lizhongbo 发表于 2020-6-7 16:16
a版,测试了一下,盘符正确,映像路径取出是这样的,\??\G:\恒信2013贺岁版系统.iso;映像大小取的是这个 ...

Highlight code by AuREHelper
(?mi)^Drive.+(\w)[\s\S]+?(\w:\\\V+)[\s\S]+?\((.+?)\)

 楼主| 发表于 2020-6-7 16:41:12 | 显示全部楼层

a版,其他的都正确,就是映像大小还不是取那个括号里面的数值
发表于 2020-6-7 16:43:42 | 显示全部楼层
lizhongbo 发表于 2020-6-7 16:41
a版,其他的都正确,就是映像大小还不是取那个括号里面的数值

你为什么就不直说你要取到什么字符?
[0]K
[1]G:\恒信2013贺岁版系统.iso
[2]3.123 GB
[3]L
[4]G:\莲花U盘维护系统 V2016.12.04.iso
[5]1.93 GB
[6]M
[7]D:\Backup\我的文档\百度云\恒信系统\jiaSP3-2013.iso
[8]1.085 GB

 楼主| 发表于 2020-6-7 16:44:37 | 显示全部楼层
afan 发表于 2020-6-7 16:43
你为什么就不直说你要取到什么字符?
[0]K
[1]G:\恒信2013贺岁版系统.iso

3.123 GB                     
发表于 2020-6-7 16:45:55 | 显示全部楼层

你看我上面取到了什么
 楼主| 发表于 2020-6-7 16:46:39 | 显示全部楼层
afan 发表于 2020-6-7 16:43
你为什么就不直说你要取到什么字符?
[0]K
[1]G:\恒信2013贺岁版系统.iso

不好意思a版是我这里弄错了

MsgBox(0, 0, $aArray[0])
MsgBox(0, 0, $aArray[1])
MsgBox(0, 0, $aArray[2]/1073741824)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-24 13:02 , Processed in 0.075427 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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