Der alternative Kommandozeileninterpreter 4DOS von JP Software, der als NDOS auch Teil der Norton Utilities ist, ergänzt den Funktionsumfang von Stapelverarbeitungsdateien. Um Verwechslungen und Inkompatibilitäten zu vermeiden, nutzt 4DOS die Dateinamenserweiterung .BTM, von englisch Batch To Memory, da die Dateien vor der Ausführung vollständig in den Arbeitsspeicher kopiert werden. Das verbraucht zwar einerseits mehr Speicher, andererseits ist die Ausführung dadurch schneller, da nicht nach jeder Zeile erneut in der Stapelverarbeitungsdatei gelesen werden muss. Batch-to-Memory-Stapelverarbeitungsdateien werden auch von JP-Softwares alternativen Kommandozeileninterpretern 4OS2 für OS/2 und 4NT bzw. Take Command (TC) für Windows unterstützt.
Unter PC DOS ab Version 7 und OS/2 von IBM wurde mit REXX eine zusätzliche Skriptsprache eingeführt, die in Dateien mit der Erweiterung .BAT (in DOS) oder .CMD (in OS/2) ohne weitere Konfiguration ausführbar sind. Auch auf anderen Betriebssystemen sind REXX-Interpreter verfügbar. Die übliche Dateinamenserweiterung für REXX-Skripte ist .REX, die mit dem Interpreter vorangestellt aufgerufen werden müssen, z. B. mit REXX MEINPROG.REX /EinBeispielParameter.
Mit Dienstprogrammen ist es möglich, REXX-Skripte mit der Erweiterung .REX, die daher nicht wie Batch-Dateien automatisch ausführbar sind, auch ohne vorangestellten Interpreter aufrufbar zu machen, beispielsweise mit DOSKEY (ein Makro für jedes REXX-Skript) oder mit 4DOS (set .rex=C:\Pfad\zum\REXX-Interpreter.exe, was fortan für alle REXX-Skripte mit der entsprechenden Dateinamenserweiterung funktioniert; für REXX-Skripte in .BAT-Dateien wie in PC DOS muss allerdings auch REXXPath in der Datei 4DOS.INI gesetzt sein).
Eine Alternative, die jedoch einige Einschränkungen hat, sind sogenannte bilinguale Batch-Dateien, die sowohl einen klassischen Batch-Teil als auch einen REXX-Teil enthalten:
/* 2>NUL:
@ECHO OFF
SET REXXPROG_NAME=%0
SET REXXPROG_PARMS=
:GET_PARMS
SET REXXPROG_PARMS=%REXXPROG_PARMS% %1 %2 %3 %4 %5 %6 %7 %8 %9
FOR %%A IN ( 1 2 3 4 5 6 7 8 9 ) DO SHIFT
IF NOT '.%1' == '.' GOTO GET_PARMS
REXX %REXXPROG_NAME%%REXX_EXT% %REXXPROG_PARMS%
GOTO DONE
REXX-Skript folgt... */
/* */
/* Hier steht nun der REXX-Skript ... */
/* */
/* Zum Beispiel: */
SAY 'HELLO,' ARG() 'ARGS=>'ARG(1)'<'
EXIT
/* Nachdem das REXX-Skript mit EXIT beendet wurde, muss sich */
/* die Batch-Datei über das Sprungziel :DONE sauber beenden. */
:DONE
SET REXXPROG_PARMS=
SET REXXPROG_NAME=
Diese Stapelverarbeitungsdatei, die mit der Erweiterung .BAT ausführbar ist und daher normal aufgerufen werden kann, startet in der ersten Zeile mit dem Kommando /*, das jedoch eine Fehlermeldung auswirft, da es sich unter DOS um kein gültiges Kommando oder Programm handelt. Mit dem Zusatz 2>NUL: wird diese Fehlermeldung unter Windows NT mit cmd.exe jedoch an das Nullgerät weitergeleitet und daher nicht auf dem Bildschirm ausgegeben; unter DOS und Windows 9x mit COMMAND.COM funktioniert das jedoch nicht, sodass die Fehlermeldung in jedem Fall ausgegeben wird und nur mit dem CLS-Kommando, das den gesamten bisherigen Textbildschirm zurücksetzt, wieder gelöscht werden kann. Ab der zweiten Zeile wird dann die Stapelverarbeitung ausgeführt, die alles aufbereitet, um sich selbst mit dem REXX-Interpreter REXX, der im Pfad sein muss, neu zu starten. Voraussetzung ist in diesem Beispiel-Skript allerdings, dass die Variable REXX_EXT=.BAT systemweit gesetzt ist, z. B. in der AUTOEXEC.BAT. In REXX wird der Batch-Teil am Anfang übersprungen, da alles, was zwischen /* ... */ steht, als Kommentar angesehen wird. Nach der Beendigung des REXX-Skripts mit dem EXIT-Befehl beendet sich schließlich auch die Stapelverarbeitung, die den REXX-Teil per GOTO-Anweisung überspringt.