1

Из-за очень старого оборудования я вынужден запустить Windows 3.1, которая управляет плоттером. Программное обеспечение, которое я использую, создает файл .bat со следующей строкой:

SPLOT.EXE/fmyfile.uc c:\myfile.plt

/f - это параметр, который следует по имени файла для преобразованного выходного файла. Проблема возникает, когда имя файла начинается с номера 1 или 2, затем splot.exe пытается вывести на порты COM1 или COM2 вместо создания файла .uc. Поскольку я не могу контролировать, как этот файл .bat создавался, мое единственное решение - создать собственный файл splot.exe как "загрузчик", который будет выполнять оригинальный файл splot.exe (я переименовал его в splotOrg.exe) с временным именем файла, затем переименуйте этот временный файл в правильное имя файла.

Поэтому я придумываю следующий файл .bat, который позже преобразовал в .exe с помощью Advanced BAT в EXE Converter:

@echo off
set str=%1
splotOrg.exe/ftempfile %2
ren tempfile %str:~2%

Это прекрасно работало из окна Windows 7 CMD, но когда я запустил его из истинной MSDOS 4.0, это не удалось. Оказалось, что % str:~ 2%, который должен обрезать первые 2 символа из переменной% str%, работает только с расширениями Windows 98+ или чем-то в этом роде.

К сожалению, я не знаю языков программирования низкого уровня, поэтому я ограничен простыми языками сценариев.

Может кто-нибудь предложить, как я могу создать файл .exe для MSDOS 4.0, который будет делать следующее:

  1. принять два аргумента командной строки, разделенных пробелом, давайте назовем их $ arg1 и $ arg2
  2. выполнить: splotOrg.exe/ftempfile $arg2
  3. вырежьте /f из $ arg1, чтобы /fmyfile.uc стал myfile.uc
  4. переименуйте tempfile в новое имя $ arg1

2 ответа2

2

Вы упоминаете об использовании Advanced BAT в EXE Converter. Согласно этому веб-сайту, исполняемые файлы «Исполняемые файлы, скомпилированные с помощью Advanced BAT to EXE Converter, будут работать на всех версиях Windows от Windows98 до Win8.1 64bit». Это не говорит MS-DOS 4.0

Решение доступно с использованием 4DOS от JP Software. Скорее всего, подойдет любая версия, но вы также можете скачать последнюю версию "Free 4DOS" с сайта 4DOS.

Вы, вероятно, можете сойти с рук:
ren *.* tempfile

В противном случае, если по какой-то причине это не сработает, вы должны иметь возможность проделать долгий путь, а именно обрезать нежелательные символы с помощью% @ instr [] (см .: JP Software for @Instr. Например, %@instr[2,%@len[%2],%2]) (или, для более старых версий 4DOS,% @ substr [].) Вы должны делать это хорошо, если у вас нет запятых в именах файлов (которые обычно не используются / не поддерживаются в именах файлов в MS-DOS).

Если ваши конвертированные в exe пакетные файлы не поддерживают расширения 4DOS, просто запустите их: 4DOS.Com/C mybatch.btm %1 %2

0

Это может быть немного длинным выстрелом, но звучит так, как будто строка « SPLOT.EXE/f » может быть жестко запрограммирована в вашей программе для плоттера.

Если вы можете найти его и заменить на что-то вроде ' MYBAT.EXE ' (с двумя пробелами в конце), то вы можете указать его на командный файл, который выглядит примерно так:

@echo off
splotOrg.exe/ftempfile %2
ren tempfile %1

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