是否可以重定向等待用户输入的命令输出(无论是否重定向该输入(,并且事先不知道将请求用户输入?
即在使用 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 volume soit
而不是:
CHKDSK ne peut pas s'exécuter parce que le volume est utilisé par un autre processus.Voulez-vous que ce volume soit Vérifié au prochain redémarrage du système ?(O/N(
使用 cmd.exe,当将输出重定向到文件时,它只是等待用户输入而不显示任何内容。
从交互式控制台应用程序捕获输出是有问题的。
第一个是由控制台应用程序的性质引起的:提示用户输入的行往往在末尾没有换行符,因为它们依赖于用户输入的回显换行符来完成该行。您将在输出文件中看到的效果是,具有用户输入的行将与下一行连接。
其次,PowerShell 将在管道中执行基于行的缓冲,因此在输入输入之前,你不会看到任何部分行(提示用户输入的行(的输出。据我所知,PowerShell 没有提供配置它的方法,你对此无能为力。
成绩单
最好的解决方案可能是使用成绩单。它捕获stdin
和stdout
,使文件看起来像您的屏幕。
要将成绩单存储到output.txt
:
Start-Transcript output.txt
chkdsk C: /F /R
Stop-Transcript