想用StdoutRead读取diskpart的窗口信息,但不成功,故来求助高手。
各位高手:本人知道StdoutRead能够读取命令行的窗口信息,以前用的也正常,可以读取DISM的窗口信息,当时的代码如下:
#RequireAdmin
Global Const $dism=IniRead($INI,"Path","dism","")
Global $info,$line,$lineplus
$info=Run($Root & "\" & $dism & "\dism.exe /get-imageinfo /imagefile:.\" & $wim,$Root & "\" & $CDTarget & "\sources",@SW_HIDE,15)
$line=""
Do
$lineplus=StdoutRead($info)
If $lineplus="" Then
ContinueLoop
EndIf
$line &= $lineplus
Until @error=1
StdioClose($info)
Msgbox(0,"",$line)
当时用以上代码可以很顺利的读取DISM的窗口信息。
但是,最近想用StdoutRead读取diskpart的窗口信息,但不成功,末尾Msgbox语句总是显示一个随机数字,有时4位,有时5位。下面是我的diskpart代码:
#RequireAdmin
#include<Constants.au3>
Global $info,$line,$lineplus
$info=Run(@ComSpec & " /c diskpart.exelist volume", "C:\windows\system32", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)
;StdinWrite($info,"list volume")
;StdinWrite($info)
$line=""
Do
$lineplus=StdoutRead($info)
If $lineplus="" Then
ContinueLoop
EndIf
$line &= $lineplus
Until @error=1
StdioClose($info)
MsgBox(0,"",$info)
特别说明,本人知道diskpart有脚本模式,但还要生成单独的txt文件。所以我还是希望用StdoutRead读取diskpart的窗口信息,这样不用生成单独的txt文件。请问各位高手,代码应该如何写,特别是Run(@ComSpec & " /c diskpart.exelist volume", "C:\windows\system32", @SW_HIDE, $STDIN_CHILD + $STDOUT_CHILD)语句这一行,应该如何表达,多谢!
#RequireAdmin
Local $iPid = Run(@ComSpec & " /c echo,list volume|diskpart.exe", "C:\windows\system32", @SW_HIDE, 0x8)
ProcessWaitClose($iPid)
Local $sInfo = BinaryToString(StdoutRead($iPid, 1, 1), 1)
MsgBox(0, "", $sInfo)
zghwelcome 发表于 2022-5-16 21:16
同义九,汝何秀 zghwelcome 发表于 2022-5-16 21:16
批处理功底不错....有大厂的感觉{:1_206:} zghwelcome 发表于 2022-5-16 21:16
十分感谢zghwelcome,十分欣赏您的批处理功底! 养成好习惯,及时结贴加注已解决。
页:
[1]