首页 > 解决方案 > 重定向等待用户输入的命令输出

问题描述

是否可以重定向等待用户输入的命令输出(无论是否重定向该输入),并且事先不知道将请求用户输入?

即使用 powerhell.exe 运行此命令时:

chkdsk C: /F /R | Tee -var test

输出是:

CHKDSK ne peut pas s'exécuter parce que le volume est utilisé
par un autre processus。Voulez-vous que ce 体积soit

代替:

CHKDSK ne peut pas s'exécuter parce que le volume est utilisé
par un autre processus。Voulez-vous que ce 体积soit
vérifié au prochain redémarrage du système ? (上)

使用 cmd.exe 将输出重定向到文件时,它只是等待用户输入而不显示任何内容。

标签: powershelluser-inputio-redirection

解决方案


从交互式控制台应用程序捕获输出是有问题的。

第一个是由控制台应用程序的一般性质引起的:提示用户输入的行末尾不会有换行符,因为它们依赖于用户输入的回显换行符来完成该行。您将在输出文件中看到的效果是带有用户输入的行将与下一行连接。

其次,PowerShell 将在管道中进行基于行的缓冲,因此在您输入输入之前,您不会看到任何部分行(提示用户输入的行)的输出。据我所知,PowerShell 没有提供配置此功能的方法,而且您对此无能为力。

成绩单

最好的解决方案可能是使用成绩单。它同时捕获两者stdinstdout使文件看起来像您的屏幕一样。

要将成绩单存储到output.txt

Start-Transcript output.txt
chkdsk C: /F /R
Stop-Transcript

推荐阅读