作为某种法律记录保存工作的一部分,我父亲的商业律师要求从一台工作电脑上获取一份客户数据库的副本。核心问题是这台工作电脑是 1988 年左右的 AOpen...thing,运行的似乎是 DOS 5.0 的修改版本。
我对实际的 MS-DOS 和旧硬件非常不熟悉,但经过一番折腾,我终于找到了律师需要的文件。问题是客户“数据库”(即空格分隔的文本文件)大约有 3MB。对于一张软盘来说,这个数据太大了,而且数据在一个文件中,根据我对实际 DOS 的有限了解,我无法用计算机上的内置程序来拆分它。
检查计算机背面时,我注意到 1 个内置串行端口、扩展槽中的并行端口,以及一个有点令人费解的 NIC,其插孔太大而不能是 RJ-11。我没有测试它是否真的是 RJ-45,因为当时我手边没有以太网电缆。但是,我本来会使用的两个程序文件(根据我的研究)在计算机上找不到。此外,我一点也不知道该怎么做才能利用 NIC。
进一步使问题复杂化的是,仅仅拔出硬盘必须被放到最后的手段中,因为这台电脑(比我还老)用于日常业务运营,并且由于电脑和我之间的距离,必须离线大约 1 天,而“客户”并不特别想要这样。
所以我的问题的关键是,由于我几乎不懂 DOS 技能(我意外地损坏了其中一个“数据库”,如果我事先不备份的话,情况就会很糟糕),有没有一种简单的方法可以利用上述资产(或其他一些我不知道的关于 DOS 的东西)从计算机中获取这个 3 MB 的文件,而无需拔出硬盘?
答案1
尝试使用 PKZip。这是一个古老的 DOS 实用程序,提供了一些最早的 zip 文件功能。您应该可以在以下网址下载它:http://wiki.oldos.org/Downloads/MSDOS。如果数据库是文本文件,那么 PKZip 应该可以让你压缩到足以放到软盘上,如果不能,那么它应该允许跨多个磁盘。此时,你的主要问题是从软盘到更现代的计算机。我不记得 PKZip 的语法,但我记得它确实有非常好的内置帮助,可以向你展示如何压缩和解压缩文件。我推荐下载中的 2.04g 版本,因为多年来它被普遍认为是最好的版本。
答案2
计算机是否有基本安装了吗?如果安装了,你也许可以在其中编写一个简单的文件分割器,如下所示:
OPEN "database.dat" FOR BINARY AS #1
LET disk% = 1
LET todo& = LOF(1)
DO UNTIL todo& <= 0
PRINT "Insert disk"; disk%; "into drive A: and press enter.";
LINE INPUT ""; foo$
LET file$ = "A:\chunk" + LTRIM$(RTRIM$(STR$(disk%))) + ".dat"
OPEN file$ FOR BINARY AS #2
LET done& = 0
DO UNTIL done& >= 1300000 OR todo& <= 0
LET buf$ = SPACE$(4096)
IF todo& < LEN(buf$) THEN LET buf$ = SPACE$(todo&)
GET #1, , buf$
PUT #2, , buf$
LET done& = done& + LEN(buf$)
LET todo& = todo& - LEN(buf$)
LOOP
CLOSE #2
LET disk% = disk% + 1
BEEP
LOOP
CLOSE #1
这会将您的数据库分割成 1.3 MB 的块,即使考虑到 FAT 开销,这些块也应该可以轻松容纳在 1.44 MB 的软盘上。
编辑:这是使用二进制 I/O 的更新版本,运行速度更快,不会出现 Ctrl-Z 字符问题,并能正确处理大小不是缓冲区大小倍数的输入文件。我在 DOSBox 下对其进行了测试,它正确地将 3 MB 的随机字节文件拆分成块。
答案3
它只有 3 兆,所以使用带跨度的 PKZIP 将是最简单的解决方案,正如其他人所说。然而
如果您遇到这样的问题并且软盘驱动器无法工作,则使用串行端口会非常容易。
要使用串行端口,您需要一个 DOS 终端程序,然后运行它使用 ZMODEM 之类的协议以 115kbps 的速度传输文件,在 115200 kbps 的速度下传输文件应该需要不到 5 分钟的时间。
在您的笔记本电脑或任何其他现代 PC 上,您需要一个 USB 转串行适配器、一根零调制解调器电缆以及一个支持相同文件传输协议的终端程序。在大多数正规的电脑商店,这些电缆每根售价约 5 美元。
我用过的最好的 MS-DOS 终端程序是 Telix 3.12 版。