Ms-Dos - reconocer la letra del cdrom

 
Vista:

reconocer la letra del cdrom

Publicado por David (1 intervención) el 25/11/2005 18:33:31
Estoy tratando de hacer un DVD autoarrancable de recuperación. Bueno mas bien de reformarlo un poco , tenia uno hecho pero solamente cargaba el ms-dos y con mis ficheros config.sys y autoexec.bat personalizados.

Ahora he decidido hacer uno pero con menus en el config.sys (como el estilo de los que pone el disco de arranque de windows98). Ya lo tengo todo hecho, pero me encontrado con un obstaculo que no soy capaz de evitar.

En los menus de arranque quiero hacer que ciertos programas arranquen solos, segun la opcion que se seleccione, como el Norton Ghost, Partition Magic, etc.

Estos programas no caben en un disquete de arranque, por lo que se graban en la parte del cd que se lee desde la letra del cd.
Me explico: Un cd de arranque pasa su \"parte\" de arranque y la emula en una disquetera virtual, mientras que la otra \"parte\" se lee desde la letra que corresponde a la unidad del CDo DVD

Pero cuando me puse a hacer el autoexec.bat, me di cuenta de que como no sabia cual seria la letra de la unidad de CD, no podia hacer que esos programas arrancaran automaticamente, si no que los usuarios tienen que buscar la letra de la unidad y ejecutar el programa. He intentado hacerlo por mis medios pero no lo consigo ni a tiros. Y no encuentro algun archivo que me devuelva un errorlevel adecuado cuando lo aplique a una letra que no exista o que no este lista¿Hay alguna variable que se configure sola al arrancar MSCDEX?

Conozco la de %CDROM% , pero no se como asignarle la letra de la unidad de cd o dvd, puesto que hay pc\'s que la tienen en d:\\, otros en e:\\, y el mio en f:\\

Por supuesto es necesario que en los pc\'s con 2 o mas unidades de cd se reconozca en cual esta el disco autoarrancable
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:reconocer la letra del cdrom

Publicado por JuanC (22 intervenciones) el 26/11/2005 19:47:27
fijate en los archivos de inicio del disco de arraque de windows
saludos y buena suerte, desde Bs As, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:reconocer la letra del cdrom

Publicado por david (1 intervención) el 26/11/2005 21:51:13
Ya lo hice, de hecho fue lo primero que mire, pero utiliza el fichero findramd.com que busca el ramdrive, y supone que el ramdrive esta por encima del cdrom, y simplemente le suma una letra a la letra del ramdrive. ¿Hay alguna manera de comprobar que existen ficheros (como IF EXIST X GOTO Y) pero que se pueda usar aunque nop exista la letra o la unidad no este lista?
Es que ya he intentado hacerlo por ese modo, pero si se encuentra con que la unidad no esta lista, en vez de devolver el errorlevel y se acabo, pone el dichoso mensaje de "la unidad no esta lista , anular, reintentar, error...", por lo que me fastidia todo el proceso, ya que quiero que se haga automaticamente si necesidad de que el usuario este ahi para darle a anular.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:reconocer la letra del cdrom

Publicado por JuanC (22 intervenciones) el 27/11/2005 22:24:47
Espero que este código sirva....
Saludos y buena suerte, desde Buenos Aires, JuanC

% By JuanC Nov-2005 %
% Basado en el trabajo de Finn Roaas - 1996 %
@ECHO OFF
CLS
ECHO.
ECHO Checking CD-ROM...
REM>c:\$tstdrv$.$$$

:test_d
%COMSPEC% nul /f /c IF EXIST d:\*.* DEL c:\$tstdrv$.$$$
IF NOT EXIST c:\$tstdrv$.$$$ GOTO D

:test_e
%COMSPEC% nul /f /c IF EXIST e:\*.* DEL c:\$tstdrv$.$$$
IF NOT EXIST c:\$tstdrv$.$$$ GOTO E
DEL c:\$tstdrv$.$$$
GOTO err_msg

:D
ECHO.
ECHO CDROM: D
GOTO end

:E
ECHO.
ECHO CDROM: E
GOTO end

:err_msg
ECHO.
ECHO CD-ROM not found
ECHO.

PAUSE

:end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:reconocer la letra del cdrom

Publicado por david (1 intervención) el 29/11/2005 19:20:20
mm parece interesante, pero no se exactamente que es lo que hace este codigo, ya que nunca he utilizado:

REM>c:\$tstdrv$.$$$

:test_d
%COMSPEC% nul /f /c IF EXIST d:\*.* DEL c:\$tstdrv$.$$$
IF NOT EXIST c:\$tstdrv$.$$$ GOTO D

Se supone que crea un archivo llamado "$tstdrv$.$$$" en c:, y luego busca una letra que no tenga ese archivo, que seria el cd, claro. Pero el problema es: ¿que pasa si el ordenador que arranca ese archivo tienes varios discos duros o particiones?

Por lo que veo solo pones como posibles letras d y e, pero supongo que seria cuestion de seguir la secuencia con mas letras.

Yo lo que hice al final (hace ya unos dias, antes de leer este mensaje) fue crear una serie de carpetas ocultas en el cd, con nombres raros, de forma que sea muy dificil que encuentre una ruta igual en cualquier otro medio. La forma en cuestion es esta: (disculpa por el toston que te meti ahi abajo);-)

En el cd se encuentra el siguiente archivo para identificarlo:

LETRA:\ 00000001\ 00000002\ 00000003\ 00000004\ 00000005\ cdtest01.dat

De forma que llamo a un batch que contiene lo siguiente:

Como veras, simplemente escanea todas las letras hasta que encuentra una que tiene la estructura anterior, de forma que da igual el nº de particiones o discos duros haya. Una vez que la encontro, asigna a una letra a la variable llamada
%cdrom% , que sirve para identificar el cdrom en el autoexec.bat. El unico problema es que el cd debe estar insertado en el primer cd-rom si se tienen varios, ya que si no al hacer el "IF EXIST..." el batch devolvera un error de "unidad no lista..."

AUTOEXEC.BAT ->CALL FINDCD.BAT

FINDCD.BAT

@echo off
if not exist c:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto d
set cdrom=c:\
goto fin
:d
if not exist d:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto e
set cdrom=d:\
goto fin
:e
if not exist e:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto f
set cdrom=e:\
goto fin
:f
if not exist f:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto g
set cdrom=f:\
goto fin
:g
if not exist g:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto h
set cdrom=g:\
goto fin
:h
if not exist h:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto i
set cdrom=h:\
goto fin
:i
if not exist i:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto j
set cdrom=i:\
goto fin
:j
if not exist j:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto k
set cdrom=j:\
goto fin
:k
if not exist k:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto l
set cdrom=k:\
goto fin
:l
if not exist l:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto m
set cdrom=l:\
goto fin
:m
if not exist m:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto n
set cdrom=m:\
goto fin
:n
if not exist n:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto o
set cdrom=n:\
goto fin
:o
if not exist o:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto p
set cdrom=o:\
goto fin
:p
if not exist p:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto q
set cdrom=p:\
goto fin
:q
if not exist q:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto r
set cdrom=q:\
goto fin
:r
if not exist r:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto s
set cdrom=r:\
goto fin
:s
if not exist s:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto t
set cdrom=s:\
goto fin
:t
if not exist t:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto u
set cdrom=t:\
goto fin
:u
if not exist u:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto v
set cdrom=u:\
goto fin
:v
if not exist v:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto w
set cdrom=v:\
goto fin
:w
if not exist w:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto x
set cdrom=w:\
goto fin
:x
if not exist x:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto y
set cdrom=x:\
goto fin
:y
if not exist y:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto z
set cdrom=y:\
goto fin
:z
if not exist z:\00000001\00000002\00000003\00000004\00000005\cdtest01.dat goto fin
set cdrom=z:\
goto fin

:fin

Y ahora vuelve al autoexec.bat y continua el resto..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar