|
|
发表于 2022-8-30 10:17:34
|
显示全部楼层
不知其他人测试结果如何,我测试的结果返回空。
代码如下:
- 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
复制代码
|
|