Hi,
wie rufe ich eine Batch-Datei aus der CONFIG.SYS auf? Es geht nicht um die Autoexec.bat. Ist der Befehl CALL in der CONFIG.SYS überhaupt zulässig?
Alternative Betriebssysteme 1.414 Themen, 9.994 Beiträge
Hi!
Nein, vorgesehen ist das nicht. Zumal zum Ausführen von Batch dateien der Commandoprozessor (COMMAND.COM) geladen sein muss und dessen Pfad wird ja erst (noch) in der CONFIG.SYS über SHELL festgelegt.
Aber evtl. hätte man über SHELL ein Art Workaround: dort kann man AFAIK eine andere Batch-datei anstelle der AUTOEXEC.BAT ausführen lassen.
Ich kann mir aber kein Problem vorstellen, dass das Ausführen einer Batch-Datei in der CONFIG.SYS erfordern würde. Worum geht denn genau?
Ab Novell-DOS bietet die CONFIG.SYS ja eine ganze Reihe von Erweiterungen in der Bearbeitung (GOTO, GOSUB/RETURN, EXIT, SWITCH, SET, ECHO, CLS, CPOS). Mittels CHAIN kann man sogar in eine andere Datei springen, die dann quasi als "Config.sys-Ergänzung" bearbeitet wird.
Damit dürfte man doch das "Schlimmste" schon direkt erschlagen können, oder?
Bis dann
Andreas
Hmm, mir will eben leider nicht das richtige Licht aufgehen ;-)
Es geht darum, DOS von einer Diskette zu starten, schnellstmöglichst eine Ramdisk anzulegen und gleich danach sämtliche Dateien auf die Ramdisk zu kopieren. Alles weitere soll dann von dort aus passieren.
Ich poste mal das Ausgangsmaterial, soweit bin ich bis jetzt und so funktioniert's. Aber später soll der ganze Spaß mal auf eine CD, deshalb muss ich eben frühestmöglich von der Ramdisk aus arbeiten. Außerdem will ich natürlich nicht ständig nerviges Gekratze auf der Diskette oder das Surren der CD hören.
Oder gibt's eine Möglichkeit, wie ich den gesamten Block von FINDRAMD bis :Normal aus der CONFIG.SYS heraus mache?
CONFIG.SYS:
DEVICE=EMM386.EXE DPMI=ON FRAME=NONE
DEVICE=DPMS.EXE
DEVICEHIGH=CDROM.SYS /D:CDROM
DEVICEHIGH=DISPLAY.SYS CON=(EGA,,1)
DEVICEHIGH=XMSDSK.EXE 4096
SHELL=COMMAND.COM /E:512 /P
LASTDRIVE=Z
HISTORY=ON,512,ON
COUNTRY=49,,COUNTRY.SYS
DOS=HIGH,UMB
DEVICEHIGH=ANSI.SYS
AUTOEXEC.BAT:
NWCDEX.EXE /D:CDROM /E /V
ECHO Search for RAMdisk and store its drive
ECHO letter in environment variable RAMDRIVE
FINDRAMD
IF ERRORLEVEL 255 GOTO NoRamDrive
IF NOT ERRORLEVEL 3 GOTO NoRamDrive
IF ERRORLEVEL 3 SET RAMDRIVE=C:
IF ERRORLEVEL 4 SET RAMDRIVE=D:
...
IF ERRORLEVEL 26 SET RAMDRIVE=Z:
IF ERRORLEVEL 27 GOTO NoRamDrive
ECHO RAMdisk drive letter is %RAMDRIVE%
GOTO Normal
:NoRamDrive
ECHO !!!!!!Unable to locate RAMdisk!!!!!!
PAUSE
:Normal
COPY a:\*.* %RAMDRIVE%\*.* /S /Y /V
SET COMSPEC=%RAMDRIVE%\COMMAND.COM
PATH %RAMDRIVE%
%RAMDRIVE%
cd \
KEYB GR+
VERIFY OFF
PROMPT [DOSDISK] $P$G
MODE CON: CP PREP=((437) EGA.CPI)
NLSFUNC COUNTRY.SYS
CHCP 437
NWCACHE 7670 1024 /LEND=ON /DELAY=OFF /CHECK
Mit SHELL= COMMAND.COM /P[:file.bat] könnte es gehen, aber dann kommt's ja nicht zur CONFIG zurück, oder?
Mit DEVLOAD kann ich angeblich Treiber auch außerhalb der CONFIG laden, aber im Dosbook steht dazu "Please use with caution." *grübel*
Später will ich den ganzen Kram natürlich in ordentliche Menüs verpacken.
Was brauch ich davon eigentlich alles für Codeseite 437?:
DEVICEHIGH=DISPLAY.SYS CON=(EGA,,1)
COUNTRY=49,,COUNTRY.SYS
MODE CON: CP PREP=((437) EGA.CPI)
NLSFUNC COUNTRY.SYS
CHCP 437
Hi!
Ich verstehe, was du machen willst. IMHI geht das aber wirklich erst so, wie du das bisher realisiert hast: die Programme können erst in der AUTOEXEC.BAT in die RAMDISK kopiert werden.
Was ich nicht mehr weiss, ist die Reihenfolge, in der CONFIG.SYS-Einträge abgearbeitet werden. ich setze mal einen Link in eine der besten Seiten zum Thema: Link.
Hier ist vorallem die Datei MPDOSTIPs.zip der Geheimtipp (falls man sie runterladen kann, hat bei mir gerade nicht geklappt - da steht das glaube ich alles drin).
Das "Sägen" des Diskettenlaufwerkes beim Booten kann noch etwas durch den CONFIG.SYS Befehl BUFFERS abfangen. Damit wird quasi ein kleiner Cache eingerichtet (normale sollten 15 Buffer sein, mann konnte mal 20 oder 30 Buffers probieren). Ich schätze einen vergleichbaren Effekt würde man durch frühes Laden des Cache-Programmes NWCACHE erreichen.
Bis dann
Andreas