是否可以在cmd运行时从命令行捕获输出?我是一个小的exe,它显示了应该用脚本处理的各种消息,并在脚本运行时向用户显示一些信息。
我的脚本使用一些参数启动程序(exe)并检查进程是否仍在运行。在程序运行时,我想捕获所有消息到变量来处理它。我找不到任何解决方案,使用“run.exe 2>& 1”等进行一些测试......失败。
有什么想法吗?
答案 0 :(得分:0)
$oInfo = New-Object System.Diagnostics.ProcessStartInfo
$oInfo.FileName = "ping"
$oInfo.Arguments = "localhost"
$oInfo.UseShellExecute = $False
$oInfo.RedirectStandardOutput = $True
$oProcess = New-Object System.Diagnostics.Process
$oProcess.StartInfo = $oInfo
[Void]$oProcess.Start()
$bDone = $False
while (!$bDone)
{
$char = $oProcess.StandardOutput.Read()
if ($char -eq -1)
{
if ($oProcess.HasExited)
{
$bDone = $True
}
else
{
Wait-Event 1
}
}
else
{
Write-Host -NoNewline "".PadLeft(1, $char)
}
}