MSDOS 4.0 String-Manipulation?

562
vanowm

Aufgrund sehr alter Hardware bin ich gezwungen, Windows 3.1 auszuführen, das den Plotter steuert. Die Software, die ich verwende, erstellt eine .bat-Datei mit folgender Zeile:

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

Die Option / f - ist ein Schalter, der nach Dateiname für die konvertierte Ausgabedatei folgt. Das Problem tritt auf, wenn der Dateiname mit der Nummer 1 oder 2 beginnt. Die splot.exe versucht dann, auf COM1- oder COM2-Ports auszugeben, anstatt eine .uc-Datei zu erstellen. Da ich keine Kontrolle darüber habe, wie diese .bat-Datei erstellt wurde, besteht meine einzige Lösung darin, meine eigene splot.exe-Datei als "loader" zu erstellen, die die ursprüngliche splot.exe (ich habe sie in splotOrg.exe umbenannt) mit temporärem Dateinamen ausführt. Benennen Sie dann die temporäre Datei in den richtigen Dateinamen um.

Ich stelle mir also die folgende .bat-Datei vor, die ich später mit Advanced BAT to EXE Converter in eine .exe-Datei konvertierte :

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

Das funktionierte vom Windows 7 CMD-Fenster aus gut, aber als ich es von True MSDOS 4.0 aus ausführte, schlug es fehl. Es stellte sich heraus, dass % str: ~ 2%, das die ersten 2 Zeichen aus der% str% -Variable ausschneiden sollte, nur mit Windows 98+ -Erweiterungen oder etwas in dieser Art funktioniert.

Leider kenne ich keine einfachen Programmiersprachen, daher beschränke ich mich auf einfache Skriptsprachen.

Kann jemand vorschlagen, wie ich eine .exe-Datei für MSDOS 4.0 erstellen kann, die folgende Schritte ausführt:

  1. Akzeptieren Sie zwei durch ein Leerzeichen getrennte Befehlszeilenargumente
  2. ausführen: splotOrg.exe/ftempfile $arg2
  3. Aus / f von $ arg1 ausschneiden, so wird /fmyfile.uc zu myfile.uc
  4. umbenennen tempfile in neuen $ arg1 Namen
1
Sie schreiben: "Ich kenne keine einfachen Programmiersprachen, daher beschränke ich mich auf einfache Skriptsprachen" <- ähm, haben Sie nicht von einer höheren Programmiersprache gehört? Wenn Sie keine Programmiersprache auf niedriger Ebene kennen, werden Sie nicht so stark eingeschränkt barlop vor 7 Jahren 0

2 Antworten auf die Frage

2
TOOGAM

Sie erwähnen die Verwendung von Advanced BAT to EXE Converter . Laut dieser Website werden die ausführbaren Dateien "Executables, die mit Advanced BAT in EXE Converter kompiliert wurden, auf allen Windows-Versionen von Windows98 bis Win8.1 64bit ausgeführt." Es heißt nicht MS-DOS 4.0

Eine Lösung ist mit 4DOS von JP Software verfügbar. Fast jede Version wird dies wahrscheinlich tun, aber Sie können sich auch das neueste "Free 4DOS" von der 4DOS-Site holen .

Sie können wahrscheinlich mit:
ren *.* tempfile

Wenn dies aus irgendeinem Grund nicht funktioniert, sollten Sie in der Lage sein, die Dinge auf lange Sicht zu erledigen, indem Sie die unerwünschten Zeichen mit% @ instr [] wegschneiden (siehe: JP-Software für @Instr . %@instr[2,%@len[%2],%2]). (oder für ältere 4DOS-Versionen% @ substr [].) Sie sollten dies tun, solange Sie keine Kommas in den Dateinamen haben (die in MS-DOS ohnehin nicht häufig in Dateinamen verwendet / unterstützt werden).

Wenn Ihre in Exe konvertierten Batchdateien keine 4DOS-Erweiterungen akzeptieren, lassen Sie sie einfach ausführen: 4DOS.Com/C mybatch.btm %1 %2

Vielen Dank! Ich habe Ihren letzten Vorschlag mit 4dos ausgeführt, um das .btm-Skript auszuführen. Wenn installiert, ersetzt 4dos die Standard-MSDOS-Befehle durch eigene Befehle. Dies wäre kein Problem, wenn die Standardschalter für diese Befehle übrig bleiben andere Batchdateien. Nur doppelt geprüft und überraschenderweise verwende ich MS-DOS 6.0, was erklärt, warum der bat-to-exe-Konverter funktioniert. vanowm vor 8 Jahren 0
Empfohlen: Verwenden Sie kein MS-DOS 6.0. Verwenden Sie MS-DOS 6.22. Ein Upgrade von 6.0 auf 6.22 ist kostenlos. (Möglicherweise möchten Sie nach "MS-DOS 6.22 Step Up" suchen.) TOOGAM vor 8 Jahren 2
0
mwfearnley

Dies kann ein bisschen weit entfernt sein, klingt aber so, als ob die Zeichenfolge ' SPLOT.EXE/f' in Ihrem Plotterprogramm fest codiert sein könnte.

Wenn Sie es finden und in etwas wie ' MYBAT.EXE ' ändern können (mit zwei Leerzeichen am Ende), können Sie es auf eine Batch-Datei zeigen, die ungefähr so ​​aussieht:

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