Manipulação de strings do MSDOS 4.0?

1

Devido ao hardware muito antigo, sou forçado a executar o Windows 3.1 que controla o plotter. O software que estou usando cria um arquivo .bat com esta linha:

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

o / f - é um comutador que segue por nome de arquivo para o arquivo de saída convertido. O problema ocorre quando o nome do arquivo é iniciado com o número 1 ou 2 e, em seguida, o splot.exe tenta gerar saída nas portas COM1 ou COM2, em vez de criar um arquivo .uc. Como não tenho controle sobre como esse arquivo .bat criou minha única solução é criar meu próprio arquivo splot.exe como um "carregador", que executará o splot.exe original (renomei-o para splotOrg.exe) com nome de arquivo temporário, em seguida, renomeie o arquivo temporário para o nome de arquivo adequado.

Então, eu tenho o seguinte arquivo .bat que depois converti para .exe com Conversor BAT para EXE :

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

Isso funcionou muito bem na janela do Windows 7 CMD, mas quando eu o executei do verdadeiro MSDOS 4.0 ele falhou. Descobriu-se que % str: ~ 2% que deveria aparar os dois primeiros caracteres da variável% str% funciona somente com extensões do windows 98+ ou algo dessa natureza.

Infelizmente, não conheço nenhuma linguagem de programação de baixo nível, portanto, estou limitado a linguagens de script simples.

Alguém pode sugerir como posso criar um arquivo .exe para o MSDOS 4.0, que fará o seguinte:

  1. aceita dois argumentos da linha de comando, separados por um espaço, vamos chame-os de $ arg1 e $ arg2
  2. executar: splotOrg.exe/ftempfile $arg2
  3. apague / f de $ arg1, então /fmyfile.uc se torna myfile.uc
  4. renomeie tempfile para o novo nome $ arg1
por vanowm 12.02.2016 / 02:02

2 respostas

2

Você menciona o Conversor avançado de BAT para EXE . De acordo com esse site, os executáveis "executáveis compilados com o Advanced BAT para o conversor EXE serão executados em todas as versões do Windows do Windows 98 para o Win8.1 64 bits". Não diz o MS-DOS 4.0

Uma solução está disponível usando o 4DOS da JP Software. Qualquer versão provavelmente fará, mas você também pode pegar o mais recente "Free 4DOS" do site 4DOS .

Provavelmente você pode se safar:
ren *.* tempfile

Caso contrário, se isso não funcionar por algum motivo, você deve ser capaz de fazer as coisas pelo caminho mais longo, que é aparar os caracteres indesejáveis usando% @ instr [] (Veja: JP Software para @Instr , por exemplo, %@instr[2,%@len[%2],%2] ) (ou, para versões mais antigas do 4DOS,% @ substr [].) Você deve fazer contanto que você não tenha vírgulas nos nomes de arquivos (que não são comumente usados / suportados em nomes de arquivos no MS-DOS).

Se seus arquivos em lote convertidos para exe não aceitarem extensões 4DOS, basta executá-los: 4DOS.Com/C mybatch.btm %1 %2

    
por 12.02.2016 / 02:16
0

Isso pode ser um pouco difícil, mas parece que a string ' SPLOT.EXE/f ' pode estar codificada em seu programa de plotadora.

Se você puder encontrá-lo e alterá-lo para algo como ' MYBAT.EXE ' (com dois espaços no final), poderá apontá-lo para um arquivo em lote que se pareça com algo como:

@echo off
splotOrg.exe/ftempfile %2
ren tempfile %1
    
por 23.05.2016 / 22:45