Windows CMD执行带输入的EXE并重定向输出,如何保留输入回显?
解决Windows CMD重定向EXE输出时缺失输入内容的问题
问题原因
当使用 test.exe < input.txt > output.txt 命令时,程序的提示信息会正常输出到文件,但输入的数值不会显示在输出里。这是因为直接运行程序时,输入内容的回显是Windows控制台的默认行为;而重定向输入后,输入从文件读取,控制台不再参与回显,所以这些数值不会被写入输出文件。
简单解决方法
方法1:手动组合提示与输入,再追加程序输出
假设你的input.txt内容为:
3 2 0
执行以下CMD命令即可生成符合预期的输出文件:
@echo off :: 先写入提示和对应的输入内容 echo Enter top, an integer between 3 and 29 (including): 3 > output.txt echo Enter side, an integer between 2 and 20 (including): 2 >> output.txt echo Enter 0 for left-tilt or 1 for right-tilt of the side: 0 >> output.txt echo. >> output.txt :: 运行程序并将结果追加到文件 test.exe < input.txt >> output.txt
这个方法直接模拟了手动运行程序时的提示+输入格式,再把程序的运行结果追加进去,最终的output.txt就会和直接运行程序的输出完全一致。
方法2:批量匹配提示与输入(适用于输入内容不固定的情况)
如果input.txt的每行对应程序的一个输入提示,可以用PowerShell命令自动关联提示和输入:
# 读取输入内容和对应的提示文本 $inputLines = Get-Content input.txt $promptTexts = @( "Enter top, an integer between 3 and 29 (including): ", "Enter side, an integer between 2 and 20 (including): ", "Enter 0 for left-tilt or 1 for right-tilt of the side: " ) # 先将提示+输入写入输出文件 $outputContent = @() for ($i=0; $i -lt $inputLines.Count; $i++) { $outputContent += "$($promptTexts[$i])$($inputLines[$i])" } $outputContent += "" $outputContent | Out-File -FilePath output.txt -Encoding Default # 运行程序并将结果追加到文件 .\test.exe < input.txt >> output.txt
内容的提问来源于stack exchange,提问作者抹茶抹茶
相关产品推荐
相关产品推荐

