Windows `Tee对象`仅在标准输入终止后打印输出

Windows `Tee对象`仅在标准输入终止后打印输出,windows,powershell,cmd,Windows,Powershell,Cmd,我正在运行一个运行时间大、输出量大的程序,因此为了在查看输出的同时进行日志记录,我在windows上使用tee命令cmd.exe: /program | tee-a program.log 程序打印实时输出(一行接一行,有明显的时间间隔),但tee仅在程序终止后打印输出。有没有办法将tee用于实时输出 注意:此问题在windows powershell.exe上仍然存在。虽然您正在执行的操作有点不清楚,但听起来您可能可以使用重定向到输出日志文件,而不是使用tee 我不熟悉您是如何使用AI培训脚本

我正在运行一个运行时间大、输出量大的程序,因此为了在查看输出的同时进行日志记录,我在windows上使用
tee
命令
cmd.exe

/program | tee-a program.log

程序
打印实时输出(一行接一行,有明显的时间间隔),但
tee
仅在程序终止后打印输出。有没有办法将
tee
用于实时输出


注意:此问题在windows powershell.exe上仍然存在。虽然您正在执行的操作有点不清楚,但听起来您可能可以使用重定向到输出日志文件,而不是使用tee

我不熟悉您是如何使用AI培训脚本的,但以下内容可以通过将stderr和stout发送到同一个文件来实现。然后,您可以使用PowerShell命令“Get Content output.log–Wait”或您选择的其他方法跟踪该文件

python_脚本args 1>output.log 2>&1


有关说明,请参阅

虽然有点不清楚您在做什么,但听起来您可能可以使用重定向到输出日志文件,而不是使用tee

我不熟悉您是如何使用AI培训脚本的,但以下内容可以通过将stderr和stout发送到同一个文件来实现。然后,您可以使用PowerShell命令“Get Content output.log–Wait”或您选择的其他方法跟踪该文件

python_脚本args 1>output.log 2>&1


有关说明,请参阅

Tee对象
不会刷新输出流本身。它会等待解释器完成,解释器通常会等待一段时间。这是故意的

我会提出一个解决方案,比如:

./program | ForEach-Object {
    Write-Host $_
    $_
} | Set-Content program.log
如果您仍然有问题,请尝试:

./program | ForEach-Object {
    [Console]::WriteLine($_)
    [Console]::Out.Flush()
    $_
} | Set-Content program.log

这应该与写入主机相同,但我不确定它刷新到控制台的频率。

Tee对象本身不刷新输出流。它会等待解释器完成,解释器通常会等待一段时间。这是故意的

我会提出一个解决方案,比如:

./program | ForEach-Object {
    Write-Host $_
    $_
} | Set-Content program.log
如果您仍然有问题,请尝试:

./program | ForEach-Object {
    [Console]::WriteLine($_)
    [Console]::Out.Flush()
    $_
} | Set-Content program.log

这应该与
Write Host
相同,但我不确定它多长时间刷新一次到控制台。

当人们在Windows中说“命令提示符”时,他们指的是
cmd.exe
。您正在使用的是
powershell.exe
,它是一个不同的shell,同样在Windows上(尽管现在在所有平台上)。你的代码看起来像什么?您的问题目前太广泛,无法得到帮助。您确定这不是
程序
问题吗。例如,它检测到它不再连接到真实控制台,并使用完全缓冲输出,而不是行缓冲或非缓冲输出?当人们在Windows中说“命令提示符”时,他们指的是
cmd.exe
。您正在使用的是
powershell.exe
,它是一个不同的shell,同样在Windows上(尽管现在在所有平台上)。你的代码看起来像什么?您的问题目前太广泛,无法得到帮助。您确定这不是
程序
问题吗。例如,它检测到它不再连接到真实控制台,并使用完全缓冲输出,而不是行缓冲或非缓冲输出?这个问题是封闭的,但这个答案实际上给了我我所需要的,所以我怀疑这里的人群是否理智。@A.Wilson封闭的问题这个老问题一直存在,因为它们仍然有用。这里的问题是这个问题写得很糟糕,所以即使我得到了正确的答案,用搜索引擎也很难找到。这个问题已经结束了,但这个答案实际上给了我所需要的,所以我怀疑这里的人群是否理智。@A.Wilson把这些老问题保留下来,因为它们仍然有用。问题是这个问题写得很糟糕,所以即使我得到了正确的答案,用搜索引擎也很难找到。