本帖最后由 872777825 于 2012-4-30 19:50 编辑 FileInstall('dsptw.exe', @TempDir & '\') ;将dsptw.exe文件打包进编译
RunWait(@ComSpec & ' /c ' & @TempDir & '\dsptw.exe /A /PDR >d:\diskinfo.txt', @TempDir, 0) ;于dos下隐藏运行dsptw生成信息文本
$str = FileRead("d:\diskinfo.txt") ;读取文本
$sR = StringRegExp($str, '([C-Z]:)\t(\d:\d+)\h*\tA\t', 3) ;正则匹配活动分区,[从C到Z]、\t匹配一个制表符、\d、匹配一个数字字符、:???
If Not @error Then MsgBox(0, 0, '活动分区 ' & $sR[0] & '='&$sR[UBound($sR) - 1])
$sR = StringRegExp($str, '([C-Z]:)\t(\d:\d+)', 3) ;正则匹配所有分区及位置
If Not @error Then MsgBox(0, 0, '最后分区 ' & $sR[UBound($sR) - 2] & '=' & $sR[UBound($sR) - 1])
FileDelete(@TempDir & '\dsptw.exe') ;删除临时文件
FileDelete(@TempDir & '\diskinfo.txt') ;删除临时文件
论坛中找到以上代码 可以得出系统分区是硬盘的第几分区 如1:1 最后分区是第几分区 如1:4
如果想知道 D 盘是第几分区 1:? 改如何改写呢
希望各位老师指点下 谢谢
谢谢下面两位老师的帮忙指点 问题得到了解答FileInstall('dsptw.exe', @TempDir & '\')
RunWait(@ComSpec & ' /c ' & @TempDir & '\dsptw.exe /A /PDR >d:\diskinfo.txt', @TempDir, 0)
$str = FileRead("d:\diskinfo.txt")
$sR = StringRegExp($str, '([C-Z]:)\t(\d:\d+)\h*\tA\t', 3)
$sR = StringRegExp($str, '([C-Z]:)\t(\d:\d+)', 3)
If IsArray($sR) Then
for $i = 0 to UBound($sR)-2 Step 2
If StringInStr($sR[$i], 'f') Then MsgBox(0, '找到 D 盘分区信息', $sR[$i+1])
Next
EndIf
只需把第8行的F改成一个需要判断的分区变量 即可判断是第几硬盘第几分区 强大 |