powershell - 重定向等待用户输入的命令输出
问题描述
是否可以重定向等待用户输入的命令输出(无论是否重定向该输入),并且事先不知道将请求用户输入?
即使用 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 将输出重定向到文件时,它只是等待用户输入而不显示任何内容。
解决方案
从交互式控制台应用程序捕获输出是有问题的。
第一个是由控制台应用程序的一般性质引起的:提示用户输入的行末尾不会有换行符,因为它们依赖于用户输入的回显换行符来完成该行。您将在输出文件中看到的效果是带有用户输入的行将与下一行连接。
其次,PowerShell 将在管道中进行基于行的缓冲,因此在您输入输入之前,您不会看到任何部分行(提示用户输入的行)的输出。据我所知,PowerShell 没有提供配置此功能的方法,而且您对此无能为力。
成绩单
最好的解决方案可能是使用成绩单。它同时捕获两者stdin
,stdout
使文件看起来像您的屏幕一样。
要将成绩单存储到output.txt
:
Start-Transcript output.txt
chkdsk C: /F /R
Stop-Transcript
推荐阅读
- python - Python Meteostat 站不断抛出错误
- python - 整体嵌套边缘检测 OpenCv Python 中的 hed[0,0] 是什么?
- wordpress - Woocommerce:如何在结帐页面上显示唯一一种付款方式的输入收音机?
- java - 设置 JPackage 安装程序,它不会覆盖较新版本中的配置文件
- javascript - 在前端下载ANSI zip文件,由C#后端生成
- javascript - slug 后生成新页面
- c - 从文本文件中读取字符并存储到结构数组中
- vba - 访问 VBA 查询提取并命名
- list - 如何在飞镖中深度复制嵌套列表?
- angular - Angular Fullstory集成如何实现用户uuid