Avatar billede herberthumlebi Nybegynder
01. februar 2006 - 20:14 Der er 9 kommentarer og
2 løsninger

Bootdisk - flere cdromdrev?

Jeg har en DOS-bootdiskette, hvor Config.sys ser således ud:

DEVICE=VIDE-CDD.SYS /D:MSCD001
device=display.sys con=(ega,,1)
device=himem.sys /testmem:off
device=ansi.sys
country=045,850,country.sys

Autoexec.bat ser således ud:

MSCDEX /D:MSCD001 /V
LH MOUSE.COM
mode con codepage prepare=((850) ega.cpi)
mode con codepage select=850
keyb dk,,keyboard.sys

---

På bootdisketten ligger bl.a. to filer: VIDE-CDD.SYS og MSCDEX.EXE

Jeg går ud fra, at det er disse filer, der loades og dermed gør, at cd-romdrevet genkendes.

I autoexec.bat læser man, at "cdromdrive found on H" eller noget i den retning.

Mit spørgsmål er: Hvis en computer nu har mere end ét cdromdrev, vil DOS-bootdisketten så genkende dem begge? Eller hvis det kun genkender ét, hvilket genkender den så?
Avatar billede soreno Praktikant
01. februar 2006 - 20:48 #1
I denne linie i config.sys:
DEVICE=VIDE-CDD.SYS /D:MSCD001

Angiver du at et cd-drev af typen VIDE-CDD.SYS skal have ID=MSCD001


I denne linie i autoexec.bat:
MSCDEX /D:MSCD001 /V

Angiver du at device med ID=MSCD001 skal tildeles et drev-bogstav.


Hvis en driver ikke finder et kompatibelt drev så loades driveren ikke.
Dermed kan der heller ikke tildeles devicet et drev.


Det der så er tricket er at finde en driver (til config.sys) der passer til cd-drevet. De fleste nye drev understøtter en atapi driver. Så hvis din driver virker med dit IDE cd-drev så er der meget stor sandsynlighed for at det virker med alle atapi kompatible drev.

Hvis du har et mere eksotisk (og evt. gammelt drev) kan der være nogle problemer.
F.eks. hvis du har et SCSI drev så skal du have en anden driver..

For at kunne understøtte 2 drev formoder jeg at du skal gøre sådan i din config.sys:
DEVICE=VIDE-CDD.SYS /D:MSCD001
DEVICE=VIDE-CDD.SYS /D:MSCD002

Og således i din autoexec.bat:
MSCDEX /D:MSCD001 /V
MSCDEX /D:MSCD002 /V

(jeg har ikke testet det..)

Se evt. dokumentationen til mscdex:
http://support.microsoft.com/?scid=http%3a%2f%2fwww.support.microsoft.com%2fkb%2f87165%2fen-us%2f
Avatar billede polle007 Nybegynder
01. februar 2006 - 20:54 #2
Hos mig finde den begge drev (uden at tilføje ekstra linier)
Avatar billede herberthumlebi Nybegynder
01. februar 2006 - 21:05 #3
Tak !

Skal lige tænke (og se håndbold!)... så vender jeg tilbage
Avatar billede soreno Praktikant
01. februar 2006 - 21:22 #4
polle007:
Men, hvilket ID får de så ?
Avatar billede herberthumlebi Nybegynder
01. februar 2006 - 23:07 #5
Forestil jer en bootcdrom. Selve bootdisketten indeholder de sædvanlige systemfiler + en række eksterne DOS-kommandoer (deltree, format, attrib osv.). Disse programmer kan tilgås fra både A: og cdromdrevets drev, fx G:

Bootcdrommen indeholder desuden en række andre programmer (som ikke er en del af bootdelen). Disse kan kun tilgås fra cdromdrevet.

Jeg vil have, at bootcdrommen åbner et program på cdrommen. Det kræver, at bootdisketten kan regne ud, hvor programmet ligger, dvs. cdromdrevets drevbogstav. Til dette formål laver jeg en "if exist"-batchfil, som køres nederst i autoexec.bat:

@echo off
if exist z:\enmappe\program.exe z:\enmappe\program.exe
if exist y:\enmappe\program.exe y:\enmappe\program.exe
if exist x:\enmappe\program.exe x:\enmappe\program.exe
if exist w:\enmappe\program.exe w:\enmappe\program.exe
if exist v:\enmappe\program.exe v:\enmappe\program.exe
if exist u:\enmappe\program.exe u:\enmappe\program.exe
if exist t:\enmappe\program.exe t:\enmappe\program.exe
if exist s:\enmappe\program.exe s:\enmappe\program.exe
if exist r:\enmappe\program.exe r:\enmappe\program.exe
if exist q:\enmappe\program.exe q:\enmappe\program.exe
if exist p:\enmappe\program.exe p:\enmappe\program.exe
if exist o:\enmappe\program.exe o:\enmappe\program.exe
if exist n:\enmappe\program.exe n:\enmappe\program.exe
if exist m:\enmappe\program.exe m:\enmappe\program.exe
if exist l:\enmappe\program.exe l:\enmappe\program.exe
if exist k:\enmappe\program.exe k:\enmappe\program.exe
if exist j:\enmappe\program.exe j:\enmappe\program.exe
if exist i:\enmappe\program.exe i:\enmappe\program.exe
if exist h:\enmappe\program.exe h:\enmappe\program.exe
if exist g:\enmappe\program.exe g:\enmappe\program.exe
if exist f:\enmappe\program.exe f:\enmappe\program.exe
if exist e:\enmappe\program.exe e:\enmappe\program.exe
if exist d:\enmappe\program.exe d:\enmappe\program.exe
if exist c:\enmappe\program.exe c:\enmappe\program.exe

Det virker ok på min computer - og også på andre computere, som jeg har forsøgt mig på.

Programmet åbnes fra cdromdrevet.

Men så kom jeg til at tænke på, hvad der ville ske, hvis DOS-bootdisketten på bootcdrommen loadede TO cdromdrev:

Hvis fx G: og H: begge er cdromdrev, og hvis brugeren har puttet cdrommen i G:, så vil "if exist"-batchfilen gå i stå ved H: og sige noget a la "forkert drev". Den vil ikke nå frem til G:.

Det hjælper ikke så meget at "vende" if-exist om, så den kigger på C: først, for så vil problemet opstå, hvis brugeren putter cdrommen i H:. Så går if-exist i stå ved G:

Problemet er altså, at et tomt cdromdrev vil blokere if exist.

---

Jeg kender ikke nogen batch-løsning på dette problem (er der nogen?) så derfor håber jeg, at soreno har ret i, at der kun genkendes et cdromdrev.
         
---

Tak for interessen.
Avatar billede polle007 Nybegynder
02. februar 2006 - 00:10 #6
med 3 cdrom drev og min bootdiskette:

config.sys:
    device=oakcdrom.sys /d:mscd001

A:\>mscdex.exe /D:mscd001 /L:P
    DRIVE P: = Driver MSCD001 unit 0
    DRIVE Q: = Driver MSCD001 unit 1
    DRIVE R: = Driver MSCD001 unit 2


problemet med "forkert drev" kan du nok løse ved at køre "command /f" først. I den nye prompt afviser den automatisk "forkert drev", og scriptet kan køre videre
Avatar billede herberthumlebi Nybegynder
02. februar 2006 - 05:53 #7
aha... interessant. Den command /f vil jeg kigge på i aften. Er det i batchfilen at command /f skal køres?

:-)
Avatar billede soreno Praktikant
02. februar 2006 - 12:32 #8
Hvis du bare vil køre programmet hvorfor så først teste om det findes ?

Hvorfor ikke bare:
z:\enmappe\program.exe
y:\enmappe\program.exe
..
c:\enmappe\program.exe


Hvis det giver grimt output kan du jo evt. reroute stdout (og evt. stderr) til nul.
f.eks.
z:\enmappe\program.exe > NUL 2> NUL
Avatar billede herberthumlebi Nybegynder
02. februar 2006 - 23:15 #9
soreno: Ville problemet ikke være det samme, altså at "if exist" går i stå, når den møder et genkendt, men tomt cdromdrev?!

Tak i øvrigt for den fine dokumentation med mscdex :-)

polle007: den der "command /f" bragte mig på sporet. Det er vist en såkaldt udokumenteret ting, for den kommer ikke frem, når man ved prompten skriver "command /?" (der kommer en del andre).

Det virkede ikke umiddelbart, men jeg har søgt som en gal på nettet og faldt til sidst over, at man skulle putte flg. i Config.sys

SHELL=COMMAND.COM /P /F

Jeg ved ikke, hvad "/P" er godt for, men "/F" gør præcis dét, jeg gerne ville have. Når "Abort, Fail, Retry" kommer ved det tomme cdromdrev, så vælger den automatisk "Fail" (tror jeg det må være) og går videre i "if exist"-batchfilen, indtil den når det drev, hvor programmet ligger. I virkelighedens verden ville det ikke være et drev, men et andet cdromdrev, men det kan jeg ikke teste, da jeg kun har ét cdromdrev på computeren. Men mon ikke "if exist" ville løbe forbi et eller flere tomme (men genkendte) cdromdrev?! Det tror jeg.

I det øjeblik, at "if exist" passerer det tomme cdromdrev, kommer der i et splitsekund den sædvanlige tekst. Den er lidt irriterende, selv om den forsvinder med det samme, så dér har jeg valgt at gøre brug af ansi.sys, som også indlæses i Config.sys. Jeg laver både baggrund og tekst sort, og så ser man ikke den irriterende fejlmeddelelse.

--

Jeg vil give point til jer begge - både for de gode input og for den hurtige reaktionstid. Det er det fede ved Eksperten - der er sgu altid nogen, der gider hjælpe. Så læg nogle svar, ok? :-)
Avatar billede soreno Praktikant
03. februar 2006 - 09:48 #10
Åh, ja. Ansi.sys, det vækker minder. Husker de gamle bbs dage :-)
Avatar billede herberthumlebi Nybegynder
04. februar 2006 - 11:39 #11
Hej soreno

Du får hermed 30 point. De øvrige tager jeg midlertidigt selv, men når polle007 dukker op, så overfører jeg dem til ham :-)

Hvis du vil se mere af mit DOS-delirium, så gå til:
http://www.eksperten.dk/spm/685259
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester