Запуск старых DOS программ под Windows x64

  • Автор:
  • Опубликовано:
  • Изменено:
  • Просмотры: 45 250
  • Комментарии: 38
  • Рейтинг: 86,67%
  • Голосов: 27

В любой организации может оказаться так, что при обновлении старых компьютеров на новые можно столкнуться с таким фактом, что компьютеры новые, но необходимость использования старых программ никуда не отпала. А одной из старых программ вполне может оказаться какое-нибудь приложение, написанное в 90ые года под MS-DOS, которое напрочь отказывается запускаться на современных операционных системах.

В таком случае очень помогает эмулятор MS-DOS под названием DOSBox.

Скачиваем последнюю версию с официального сайта, после устанавливаем. Никаких необычных действий при установке программы не требуется.

Теперь ищем необходимую вам DOS программу. Допустим она располагается на диске D в папке Prog и называется Prog.exe. Переходим в эту папку, и создаем там текстовый файл с любым названием и расширением conf. В него пишем:

[autoexec]
mount c D:\Prog
c:
Prog.exe
exit

mount c D:\Prog - монтирует в эмулятор папку D:\Prog как раздел жесткого диска С;
c: - осуществляет переход на раздел C жесткого диска;
Prog.exe - запускает нужную программу. Вместо exe файла могут быть так же файлы с расширением bat или pif.
exit - закрывает DOSBox после завершения работы программы. Работает ТОЛЬКО с exe файлами.

Если вам нужно, чтобы DOSBox закрывался после запуска bat файла, то вместо простого запуска prog.bat пишем:

call prog.bat

Теперь создаем еще один текстовый файл с расширением bat. В него пишем:

start "" "C:\Program Files (x86)\DOSBox-0.74\DOSBox.exe" -conf "D:\Prog\prog.conf"

Вместо "C:\Program Files (x86)\DOSBox-0.74" указываем тот путь, куда была установлена программа DOSBox. Вместо D:\Prog указываем путь к нужной DOS программе, и вместо prog.conf указываем имя файла, созданного выше.
Сохраняем, и пробуем запустить. Если все прошло успешно, то появится окошко DOSBox, в котором запустится нужная программа.

norus

Впрочем, момент триумфа может омрачить полное отсутствие русского языка - но это дело поправимое.
Для начала скачиваем с официального сайта официальную локализацию - после чего распаковываем содержимое архива в каталог с программой. Теперь открываем созданный выше conf файл, и дописываем туда в самый верх следующее:

[dosbox]
language=russian.txt

[dos]
keyboardlayout=RU

Где "C:\Program Files (x86)\DOSBox-0.74\russian.txt" - это путь к распакованному в папку с программой файлу russian.txt.

Если путь к файлу russian.txt содержит пробелы, обязательно закрываем его в кавычки, как в примере выше. Если же пробелов в пути нет, кавычки не нужны, и скорее всего DOSBox не будет корректно работать.

Сохраняем и пробуем запустить программу.

rus

Теперь русские символы отображаются и печатаются.

Переключение языка в DOSBox осуществляется с помощью одновременного нажатия левого Alt и правого Shift.

Если при запуске программы смущает второе окошко DOSBox, которое открывается вместе с основным окном, то можно в bat файл дописать параметр -noconsole, в итоге bat файл для запуска приобритет следующий вид:

start "" "C:\Program Files (x86)\DOSBox-0.74\DOSBox.exe" -conf "D:\Prog\prog.conf" -noconsole

Оценить статью

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (27 оценок, среднее: 4,33 из 5)
  • Ювеналий:

    Здравствуйте!
    При попытки запустить бат файл он пишет ошибку; Не удается найти "-conf". Проверьте, правильно ли указанно имя и повторите попытку.
    Проверял правильность заполнения созданных мною файлов несколько раз и ошибок не увидел.

  • Никита:

    Та же ерунда, что и у предыдущего пользователя/

  • Recluse:

    Да, в статье была допущена небольшая ошибка. Попробуйте исправить свой bat файл на то, что сейчас в статье.

  • QuicKid:

    У меня всё отлично заработало. Даже с CLS поэкспериментировал, чтоб удалять мусор из КС. Автор, спасибо за помощь. Ты отличный человек)
    К сведению: Windows 7 ultimate 64x. Проблем не возникло.
    Ребят проверяйте себя лучше. Вероятнее всего сами допустили ошибку.
    Пишите, подскажу, если что alexxx.merc@gmail.com

  • Алексей:

    Как настроить загрузку необходимых BD, если они в другом каталоге?

  • Recluse:

    Не совсем в курсе, что подразумевается под "BD", не могли бы вы поподробнее рассказать про это?

  • Алексей:

    Программа DOS пытается открыть базу данных из другого каталога и выходит ошибка о невозможности открыть данный файл. Если я правильно понял программа запускается в dosbox на вирт. диске и доступ к другим ресурсам получается недоступен. Как подключить внешние данные причем с сохранением пути?

  • Recluse:

    Самое простое, что мне приходит на ум, это попробовать сделать символическую ссылку, например через программу Link Shell Extension. О том, как ей пользоваться можно почитать в этой статье -

    https://sysadmin.ru/windows-xp-kak-sdelat-simvolicheskuyu-ssylku-simlink.html#___Link_Shell_Extension

    Т. е. попробовать сделать ссылку с файлом/папки базы в ту директорию, которая монтируется в DOSBox.

  • Ирина:

    Добрый день! У меня почему-то не получается сделать русский язык. Все сделала как сказано. После добавления в conf-файл
    [dosbox]
    language="C:\Program Files (x86)\DOSBox-0.74\russian.txt"

    [dos]
    keyboardlayout=RU
    открывается только черное окошко, программа не загружается и через несколько секунд окно закрывается.
    Без этого открывается, но с иероглифами. Подскажите, пожалуйста, что не так.

  • Recluse:

    Попробуйте в файле conf написать следующее (вместо того, что было в статье):

    [dosbox]
    language=russian.txt
    
    [dos]
    keyboardlayout=RU

    Ну и стоит убедиться в наличии файла russian.txt в папке DOSBox.

  • Ирина:

    Спасибо! Скопировала файлы russian.txt и dosbox.conf в папку с программой, которую нужно запустить и написала в файле conf
    [dosbox]
    language=russian.txt

    [dos]
    keyboardlayout=RU

    Все заработало!!! Еще раз спасибо!!!

  • Сергей:

    Всем привет! Эта программа и все процедуры будут действовать для 32-х разрядной системы? А то вроде все правильно, а в итоге все закрывается( Если нет то как мне быть кто подскажет!!!

  • Recluse:

    Для 32-разрядных систем путь по умолчанию к программе в bat файле будет немного другой - вместо C:\Program Files (x86)\DOSBox-0.74 должен быть просто C:\Program Files (x86)\DOSBox-0.74.

  • Игорь:

    Здравствуйте, уважаемый Recluse.
    У меня после запуска bat файла появляется вот такое окошко (ссылка на скриншот http://take.ms/12ZLK). Странно, DOSBox лежит в папке Program File, а его .exe файл почему-то Windows 10 не видит? В чем тут может быть дело? Подскажите, пожалуйста.
    И еще, в Вашем последнем ответе на комментарий от 10.02 Вы вроде бы исправляете какую-то ошибку в bat файле, но я не увидел никакой разницы в записях:
    (" вместо C:\Program Files (x86)\DOSBox-0.74 должен быть просто C:\Program Files (x86)\DOSBox-0.74."). Возможно тут опять какая-то неточность?
    Спасибо

  • Recluse:

    Судя по тексту ошибки, у вас нету файла DOSBox.exe по пути C:\Program Files (x86)\DOSBox-0.74. Попробуйте перейти в эту папку через Проводник, и скопировать через него путь к исполняемому файлу DOSBox в bat файл.

  • Игорь:

    Здравствуйте, уважаемый Rrecluse!
    Спасибо за Ваш быстрый ответ. Я скопировал путь из проводника и теперь после запуска bat файла открывается вот такое окно DOSBox (ссылка http://take.ms/iWGID ), но нужный мне DOS файл не запускается. Проверьте, пожалуйста, мои 2 файла.
    Нужная мне программа CESS2 лежит на диске D, исполняемый файл CG3.exe.
    Первый файл st.conf
    [autoexes]
    mount c E:\CHESS2
    c:
    CG3.exe
    exit
    Ниже bat файл Chess.bat
    start "" "C:\Program Files\DOSBox-0.74\DOSBox.exe" -conf "E:\CHESS2\st.conf"
    Надеюсь на Вашу помощь.
    Спасибо

  • Игорь:

    Извините, ошибка в предыдущем коментарии - программа лежит на диске E, а не на D

  • Recluse:

    Если честно, то с трудом представляю, что могло пойти не так, так как вроде все в файлах указано верно.
    Могу предложить выполнить в окне DOSBox следующие команды из файла st.conf:

    mount c E:\CHESS2
    c:
    CG3.exe

    И посмотреть, запустится ли программа.

  • Игорь:

    Спасибо большое, получилось, правда с трудом и с нюансами. Попробую описать. После ввода рекомендованной Вами добавки, нажимаю Enter - ничего, жду сек 30, опять на всякий случай жму Еnter - появляется пустое голубоватое окошко, жду и примерно через минуту запускается программа. Если бы не ждал,то и не узнал бы. Проделал ту же операцию с другой программой. Без добавки она тоже не запускалась, но с добавкой открылась и гораздо быстрее. Но есть еще такие трудности. Добавка не сохраняется и ее надо вводить при каждой попытке запуска. Закрыть запущенную программу удается или введя команду exit через диспетчер задач - движение курсора мыши ограничено и до строки с крестом закрытия он не достает.
    Но все равно,большое спасибо!

  • Алексей:

    Может быть кто-то подскажет.
    Программа для DOS работала через com-порт с медицинским прибором.
    Запустить программу через Dosbox получилось (через графическую оболочку D-Fend Reloaded), доступ в архив программы есть, но получать данные с устройства не получается. Номер порта и прерывание установил вроде бы правильно. Система Windows XP 32-битная.
    Очень извиняюсь, что не совсем соответствует теме.
    Заранее огромное спасибо за помощь.

  • Recluse:

    Покажите ту часть настроек/конфига, в которой прокидывается com порт из реальной системы в эмулируемую.

  • Сергей:

    Здравствуйте, подскажите пожалуйста, в чем может быть проблема, DOS приложение нормально запускается через DosBox но при работе не функционируют часть кнопок, например в программе есть возможность индексации базы данных и при попытке выполнить индексацию ничего не происходит, так же при работе в базе данных не открывается некоторые окна. Никаких ошибок при этом не показывается. Есть ли какие нибудь настройки в DOSBox касающиеся работы с БД? Спасибо.

  • Recluse:

    Это очень странно, но я сомневаюсь, что проблема в самом DOSBox. Видит ли программа нормально саму базу? Находится ли файл базы в той же директории, что и сама программа? Желательно было бы еще и конфиг DOSBox посмотреть, который используется для работы с программой.

  • Сергей:

    Для Алексея:
    А какой смысл под 32 разрядной ХР запускать DOSbox ? ХР вполне сносно исполняет большинство досовских программ и доступ к компорту будет прямой.
    С DOS программами не было проблем и в Win7 32.
    DOSbox необходим при наличии 64-битной системы

  • Игорь:

    А мне тоже страсть как нужно запустить дос-прожку, но загогулина в том, что она записана на ключевой к дискете, к которой постоянно обращается в процессе работы. Как быть?

  • Recluse:

    Попробуйте после строки

    mount c D:\Prog

    Написать следующее:

    mount A A:\ -t floppy

    Подразумеваю, что у вас есть дисковод, которому в системе присвоена буква A (по умолчанию), и в него вставлена нужная дискета.

  • Васян:

    Уважаемые знатоки! Сделал все по инструкции, но результата это не принесло. Вместо запуска голубого окна эмулятор просто закрывается. Что я делаю не так? Может ли программа MS-DOS запускаться через другую, FAR?

  • Recluse:

    Что пытаетесь запустить?
    Если FAR Manager, то он не является MS-DOS программой.

  • Антон:

    Уважаемый Recluse и остальные знающие, как заставить работать F1-10 клавиши?

  • Васян:

    Пытаемся загрузить БД с перечнем людей, сделали все, что указанно в инструкции. Но при запуске эмулятора он выключается и ничего не происходит. Интерфейс этой БД очень похож на FAR Manager, вот и подумал, что он тоже может быть связан с запуском.

  • Иван:

    Подскажите что делать, если у запущенной программы в DOS поехали шрифты все, как их поменять?

    • Recluse:

      А что подразумевается "поехавшие шрифты"? Если вместо русского языка отображаются различные загогулины, то в статье есть решение.

  • Сергей:

    Все делал по инструкции, запускается Dosbox и тут же закрывается, в чем может быть проблема. система Win 7x64.

  • Recluse:

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

  • Сергей:

    Conf-файл:
    [autoexec]
    mount c D:\Uchet
    c:
    Uchet.bat
    exit
    bat-файл:
    start "" "C:\Program Files (x86)\DOSBox-0.74\DOSBox.exe" -conf "D:\Uchet\start.conf"

  • Recluse:

    А что внутри Uchet.bat?

  • Сергей:

    @ECHO OFF
    SET CLIPPER=V030;F250;
    SET CLIP_PATH=\UCHET\WORK\
    SET P_SOFT=\UCHET
    SET LINGVA=1
    SET sel=
    rem VIDRAM ON > NUL

    REM é¢üÄÉ ÅÉàäÅÉêƒÆêƒ
    :sel
    CLS
    IF NOT EXIST %P_SOFT%\sel.exe GOTO again
    SET CLIP_PATH=\UCHET\WORK_1\
    sel.exe

    IF ERRORLEVEL -1 GOTO end
    if ERRORLEVEL 20 GOTO i20
    if ERRORLEVEL 19 GOTO i19
    if ERRORLEVEL 18 GOTO i18
    if ERRORLEVEL 17 GOTO i17
    if ERRORLEVEL 16 GOTO i16
    if ERRORLEVEL 15 GOTO i15
    if ERRORLEVEL 14 GOTO i14
    if ERRORLEVEL 13 GOTO i13
    if ERRORLEVEL 12 GOTO i12
    if ERRORLEVEL 11 GOTO i11
    if ERRORLEVEL 10 GOTO i10
    if ERRORLEVEL 9 GOTO i9
    if ERRORLEVEL 8 GOTO i8
    if ERRORLEVEL 7 GOTO i7
    if ERRORLEVEL 6 GOTO i6
    if ERRORLEVEL 5 GOTO i5
    if ERRORLEVEL 4 GOTO i4
    if ERRORLEVEL 3 GOTO i3
    if ERRORLEVEL 2 GOTO i2
    if ERRORLEVEL 1 GOTO i1

    :i1
    SET clip_path=\UCHET\WORK_1\
    SET sel=1
    GOTO again

    :i2
    SET clip_path=\UCHET\WORK_2\
    SET sel=2
    GOTO again

    :i3
    SET clip_path=\UCHET\WORK_3\
    SET sel=3
    GOTO again

    :i4
    SET clip_path=\UCHET\WORK_4\
    SET sel=4
    GOTO again

    :i5
    SET clip_path=\UCHET\WORK_5\
    SET sel=5
    GOTO again

    :i6
    SET clip_path=\UCHET\WORK_6\
    SET sel=6
    GOTO again

    :i7
    SET clip_path=\UCHET\WORK_7\
    SET sel=7
    GOTO again

    :i8
    SET clip_path=\UCHET\WORK_8\
    SET sel=8
    GOTO again

    :i9
    SET clip_path=\UCHET\WORK_9\
    SET sel=9
    GOTO again

    :i10
    SET clip_path=\UCHET\WORK_10\
    SET sel=10
    GOTO again

    :i11
    SET clip_path=\UCHET\WORK_11\
    SET sel=11
    GOTO again

    :i12
    SET clip_path=\UCHET\WORK_12\
    SET sel=12
    GOTO again

    :i13
    SET clip_path=\UCHET\WORK_13\
    SET sel=13
    GOTO again

    :i14
    SET clip_path=\UCHET\WORK_14\
    SET sel=14
    GOTO again

    :i15
    SET clip_path=\UCHET\WORK_15\
    SET sel=15
    GOTO again

    :i16
    SET clip_path=\UCHET\WORK_16\
    SET sel=16
    GOTO again

    :i17
    SET clip_path=\UCHET\WORK_17\
    SET sel=17
    GOTO again

    :i18
    SET clip_path=\UCHET\WORK_18\
    SET sel=18
    GOTO again

    :i19
    SET clip_path=\UCHET\WORK_19\
    SET sel=19
    GOTO again

    :i20
    SET clip_path=\UCHET\WORK_20\
    SET sel=20
    GOTO again

    :again
    IF NOT EXIST %P_SOFT%\U_ARM.EXE BE %P_SOFT%\uchet2.dat
    IF NOT EXIST %P_SOFT%\U_ARM.EXE GOTO end
    IF EXIST %P_SOFT%\U_ARM.EXE %P_SOFT%\U_ARM.EXE

    REM éδí«α »«ñß¿ßΓѼδ ß πßΓá¡«ó¬«⌐ ¬«ñá ó«ºóαáΓá

    IF ERRORLEVEL -1 GOTO sel_next
    IF ERRORLEVEL 3 GOTO restored
    IF ERRORLEVEL 2 GOTO copyd
    GOTO end

    REM ÅÑαÑσ«ñ ¬ óδ»«½¡Ñ¡¿ε óδíαá¡¡«⌐ »«ñß¿ßΓѼδ

    :restored
    IF NOT EXIST %P_SOFT%\unarc.bat BE %P_SOFT%\uchet2.dat
    IF EXIST %P_SOFT%\unarc.bat call %P_SOFT%\unarc.bat uchet a:\
    goto again

    :copyd
    IF NOT EXIST %P_SOFT%\arc.bat BE %P_SOFT%\uchet2.dat
    IF EXIST %P_SOFT%\arc.bat call %P_SOFT%\arc.bat uchet a:\
    goto again

    :sel_next
    IF NOT EXIST %P_SOFT%\sel.exe GOTO end
    GOTO sel

    :end
    cls

    rem VIDRAM OFF > NUL
    CLS
    exit

    • Recluse:

      По пути D:\UCHET есть папка с таким же названием - Uchet? Если нет, то попробуйте скопировать данный bat файл в корень диска D, и запустить его оттуда.

Добавить комментарий

Ваш e-mail не будет опубликован.