MSDOS 4.0 манипулирование строками?

Из-за очень старого оборудования я вынужден запустить 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. переименовать временный файл в новое имя $arg1

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

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

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

@echo off
splotOrg.exe/ftempfile %2
ren tempfile %1
Другие вопросы по тегам