如何在 PowerShell 输出流中正确反映回车 returns?

How to reflect carriage returns properly in PowerShell output stream?

我这里可能有一个非常具体的情况,但希望有人能提供一些见解...

我正在使用 powershell 脚本为 python 3 安装和管理 conda 环境。调用 conda 命令时,我们希望将这些命令的 everything 输出到控制台和日志文件。

目前的策略是这样的:

$logFile = C:/some/log.path    
$thisScript = {. ./conda command}
. $thisScript *>&1 | Tee-Object -FilePath $logFile

除一件事外,这很好用: conda 命令通常输出各种进度条(不是进度流,因为这些是为 cmd.exe 编写的)并且在控制台中通常这些条在一行上填充到 100%,可能是通过使用我猜是 CR 字符?)但每次以这种方式输出时,这些进度条都会刷新为新行,如下所示:

some-package        |            | 0% 
some-package        | #####      | 50% 
some-package        | ########## | 100%

我们有很多这样的包,所以这些重复的条目使日志文件变得乏味。 任何人对如何允许输出流适当地处理 carraige return 字符并覆盖控制台和日志文件中的行有任何想法吗?

Suppress the progress bar-q/--quiet。 link 用于 conda install 但这是一个常用参数。


如果您的目标是查看进度条但没有将其输出到日志文件中的多行,不幸的是没有办法实现这一点我知道,缺少 运行 异步过程并按照您想要的方式处理收到的输出(例如,将所有内容输出到控制台,仅将 100% 的进度条写入日志文件,但这将是 100% 的自定义解决方案)。