27

Похоже, что [COMMAND]>[FILE] не работает в ранних версиях MS-DOS. Я использую MS-DOS 1.25 и приведенное выше выражение дает утверждение invalid argument .

Обновление: так как это правда, что это не работает в DOS 1.x, то возможно получить этот вывод, используя некоторые функциональные возможности виртуальной коробки или, скажем, получая вывод из некоторых файлов журнала.

3 ответа3

40

Похоже, что [COMMAND]> [FILE] не работает в ранних версиях MS-DOS.

Я использую MS-DOS 1.25 и приведенное выше выражение дает утверждение недопустимый аргумент

Это правильно. То, что вы хотите сделать, не возможно в v1.25.

Перенаправление команд (наряду со многими другими улучшениями) было добавлено в v2.0.

MS-DOS версии 2.0 (эквивалент PC-DOS 2.0) была впервые выпущена в марте 1983 года. В ретроспективе это была новая операционная система (хотя для обеспечения совместимости с MS-DOS версии 1 была предпринята большая осторожность). Он содержал много значительных нововведений и улучшенных функций, в том числе перечисленных на следующей странице.

  • Поддержка как дискет большей емкости, так и жестких дисков
  • Многие UNIX/XENIX-подобные функции, в том числе иерархическая файловая структура, файловые дескрипторы, перенаправление ввода / вывода, каналы и фильтры
  • Фоновая печать (печать спулинга)
  • Метки тома плюс дополнительные атрибуты файла
  • Устанавливаемые драйверы устройств
  • Настраиваемый пользователем файл конфигурации системы, который контролирует загрузку дополнительных драйверов устройств, количество системных дисковых буферов и т.д.
  • Поддержка блоков среды, которые могут использоваться для передачи информации между программами
  • Дополнительный драйвер дисплея ANSI, который позволял программам позиционировать курсор и управлять характеристиками дисплея аппаратно-независимым способом
  • Поддержка динамического выделения, модификации и освобождения памяти прикладными программами
  • Поддержка пользовательских интерпретаторов команд (оболочек)
  • Системные таблицы, помогающие прикладному программному обеспечению изменять его валюту, время и форматы даты (известные как международная поддержка)

Источник Расширенное программирование MS-DOS Рэй Дункан


Что я могу сделать вместо этого?

Возможный обходной путь - захватить экран (как текст) и проанализировать вывод.

Ответы на этот вопрос Снимок экрана в DOS содержит список некоторых программ TSR (Terminate but Stay Resident), которые являются отправной точкой для изучения.

5

вы можете использовать средства отладки вашей виртуальной машины (или 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, когда программа выводит данные, или вы можете написать сценарий, который приостанавливает работу процессора, последовательно сохраняет содержимое, если изменяется вывод, сохраняется обновленное содержимое, продолжается процессор запустить

Некоторые варианты для расследования:

  • узнайте, как написать сценарий отладки для выгрузки содержимого памяти вашего приложения

  • найти решение для отладки vga драйвера / последовательного порта / памяти для quemu / dosbox / virtualbox

  • найти какую-нибудь старую служебную программу 80-х годов, которую, возможно, кто-то написал для этой цели

  • добавьте сюда тег Freedos (или даже переместите / повторите ваш вопрос о большом стеке потока, я полагаю, некоторые гуру должны знать кое-что о таких проблемах, как эта

Я обновлю позже, если найду что-нибудь интересное, но не могли бы вы рассказать подробнее о том, почему вы используете 1.25, работает ли эта программа на более новых версиях msdos? Могу поспорить, что вы можете найти какого-нибудь молодого сборочного хакера, желающего за небольшую плату залатать эту программу до новой версии (или добавить вывод файла с помощью asm)

-3

Вы можете установить C и написать программу, которая будет принимать команды dos, запускать их в оболочке и регистрировать результаты. Я бы порекомендовал вам использовать Borland Turbo C 2.01. Вы также можете написать код на Quickbasic, если вы хотите написать код ... ;-)

https://archive.org/details/msdos_borland_turbo_c_2.01

Лично я бы использовал DOS 5.5 или 6, учитывая, что есть несколько дополнительных вещей, которые вы получите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .