不知其他人测试结果如何,我测试的结果返回空。
代码如下:
Local $mytxt=RunCMD("dir E:\*.txt")
MsgBox(0,1,$mytxt)
Exit
Func GetCMD($command)
Local $strA
Local $var="d:\dir.txt"
Run(@ComSpec & ' /c ' & $command & '>"'&$var&'"',"", @SW_HIDE)
$strA=FileRead($var)
FileDelete($var)
Return $strA
EndFunc
Func RunCmd($sCommand, $bBin = False, $bWait = False) ;1:要执行的命令行(无需带@ComSpec) 2:是否以二进制方式读取(防止中文乱码,如ImageX) 3:是否等待进程执行完毕(防止部分exe数据流获取不全,如Diskpart)
Local $STDERR_CHILD
Local $STDOUT_CHILD
If $bBin Then
Local $sOutput = Binary('')
Else
Local $sOutput = ''
EndIf
Local $iPID = Run($sCommand, '', @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
If $bWait Then
ProcessWaitClose($iPID)
$sOutput = StdoutRead($iPID, False, $bBin)
MsgBox(0,0, $sOutput )
Else
While 1
$sOutput &= StdoutRead($iPID, False, $bBin)
If @error Then ExitLoop
WEnd
EndIf
If $bBin Then $sOutput = BinaryToString($sOutput, 4)
Return $sOutput
EndFunc ;==>RunCmd
使用文件中转读取却没有任何问题:
下面是我自己的函数:Local $mytxt=GetCMD("dir E:\*.txt")
MsgBox(0,1,$mytxt)
Exit
Func GetCMD($command)
Local $strA
Local $var="d:\dir.txt"
Run(@ComSpec & ' /c ' & $command & '>"'&$var&'"',"", @SW_HIDE)
$strA=FileRead($var)
FileDelete($var)
Return $strA
EndFunc
|