![将命令的输出保存在文件 MS-DOS 1.x 中](https://linux22.com/image/1504665/%E5%B0%86%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%E4%BF%9D%E5%AD%98%E5%9C%A8%E6%96%87%E4%BB%B6%20MS-DOS%201.x%20%E4%B8%AD.png)
似乎[COMMAND]>[FILE]
在早期版本的 MS-DOS 中不起作用。我使用的是 MS-DOS 1.25,上面的表达式给出了语句invalid argument
。
更新:由于它确实在 DOS 1.x 中不起作用,那么是否可以使用虚拟框的某些功能或通过获取某些日志文件的输出来获取该输出。
答案1
您可以使用虚拟机调试工具(或 gdb/其他工具)直接读取内存。ms-dos 没有内存保护,也不是多任务系统,因此您可以读取虚拟机内存,可以读取虚拟机 vga 进行输入。
文档说存在一个命令
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
获取输出的正确语法是:运行 VirtualBox --debug --startvm msdos1.25
,然后,在调试器控制台中:
info vgatext
复制粘贴的输出:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
因此,您可以编写一个调试器脚本,该脚本挂接程序内存中的内存值,并在程序输出时转储 vga 屏幕 / 或者您可以编写脚本来暂停 CPU,持续保存内容,如果输出发生变化,则保存更新的内容,继续 CPU 运行
需要调查的一些选项包括:
了解如何编写用于转储应用程序内存内容的调试脚本
为 quemu/dosbox/virtualbox 找到一些调试 vga 驱动程序/串行端口/内存转储解决方案
找到一些 80 年代的旧实用程序,也许当时有人为此目的编写了这些程序
在这里添加 freedos 标签(或者在 stackoverflow 上移动/重复你的问题,我想一些专家应该对这类问题有所了解
如果我发现一些有趣的东西,我会稍后更新,但你能透露一些细节,说明你为什么使用 1.25 吗?这个程序可以在较新版本的 msdos 上运行吗?我敢打赌,你可以找到一些年轻的汇编黑客,他们渴望用少量费用将这个程序修补到较新的版本(或使用 asm 添加文件输出)
答案2
看来 [COMMAND]>[FILE] 在早期版本的 MS-DOS 中不起作用。
我使用的是 MS-DOS 1.25,上面的表达式给出了语句无效参数
没错。你想做的事情在 v1.25 中是不可能实现的。
命令重定向(以及许多其他改进)已添加到 v2.0 中。
MS-DOS 2.0 版(相当于 PC-DOS 2.0)于 1983 年 3 月首次发布。回想起来,这是一个新的操作系统(尽管非常注意保持与 MS-DOS 1 版的兼容性)。它包含许多重大创新和增强功能,包括以下页面列出的功能。
- 支持更大容量的软盘和硬盘
- 许多类似 UNIX/XENIX 的功能,包括分层文件结构、文件句柄、I/O 重定向、管道和过滤器
- 后台打印(打印后台处理)
- 卷标,以及附加文件属性
- 可安装的设备驱动程序
- 用户可定制的系统配置文件,用于控制附加设备驱动程序的加载、系统磁盘缓冲区的数量等
- 维护可用于在程序之间传递信息的环境块
- 可选的 ANSI 显示驱动程序,允许程序以独立于硬件的方式定位光标和控制显示特性
- 支持应用程序动态分配、修改和释放内存
- 支持定制的用户命令解释器(shell)
- 系统表帮助应用软件修改其货币、时间和日期格式(称为国际支持)
来源Ray Duncan 撰写的《高级 MS-DOS 编程》
我可以做什么呢?
一种可能的解决方法是捕获屏幕(作为文本)并解析输出。
这个问题的答案DOS 中的屏幕截图列出一些 TSR(终止但留驻)程序,作为您调查的起点。
答案3
您可以安装 C 并编写一个程序来执行 dos 命令,在 shell 中运行它们并记录结果。我建议您使用 Borland Turbo C 2.01。如果您想编写代码,您也可以在 Quickbasic 中编写代码... ;-)
https://archive.org/details/msdos_borland_turbo_c_2.01
就我个人而言,我会使用 DOS 5.5 或 6,因为它会提供一些额外的东西。