PDA

View Full Version : Individuare da DOS la lettera dell'unità CDROM contente.....


biondaaa
29-01-2003, 23:47
Ho bisogno di un comando, una utility che, lanciata dall'Autoexec.bat, mi sappia restituire la lettera dell'unità CDRom che contiene il CD con il file xxxxx.exe

Potrò così nella linea successiva richiamare quel file con una linea del tipo:
%CDROM%\xxxx.exe

Ho provato ad assegnare con il MSCDEX una lettera alla prima unità ottica e da quella in poi ho messo una serie di:

If exist M:\xxxx.exe etc ect
If exist N:\xxxx.exe etc ect
..................
in modo da individuare l'unità con il mio dischetto CD contenente il file xxx.exe

ma chiaramente quando accede ad un drive cdrom vuoto il file batch si interrompe !


COME POSSO FARE ?!?!

grazie :)

atragon
30-01-2003, 08:44
Non è che mi ricordi molto della programmazione batch ma non è che puoi aggirare l'interruzione del batch tramite il l'intercettazione degli errorlevel? qualcosa del tipo:
M:
IF exist M:\xxxx.exe ecc...
IF ERRORLEVEL 1 goto N:
N:
IF EXIST N:\xxxx.exe ecc
IF ERRORLEVEL 1 goto O:
O:

ecc....

E' solo un'idea volante e non so se l'ho messa giù bene, spero che ti sia utile.

biondaaa
30-01-2003, 08:51
infatti, sapevo si potesse fare una cosa del genere, solo che ho trovato poca documentazione sull' ERRORLEVEL

però provo subito :)

atragon
30-01-2003, 09:31
Comunque per quanto mi ricordo errorlevel 1 comprende tutti i livelli da 1 in su quindi dovrebbe andare bene sempre o quasi...

biondaaa
30-01-2003, 10:24
eeeh ... prtrppo niente da fare

accetta traqnuillamente F: o G: che sono le unità associate correttamente da MSCDEX, e l'errorlevel 0 rimane, ma nel momento in cui testi la presenza del file in questione sull'unità, per esempio con un <If exist...>, non essendoci in F: il dischetto CD, il file batch si ferma inesorabilmente chiedendoti <Ignora,Riprova,Tralascia? > e qui non c'è niente da fare.

ci vuole 1 altra strada...

cionci
30-01-2003, 10:43
Se vuoi ti faccio un programmino che ti guarda se esiste il file in tutte le lettere di unità fino alla Z e ti rende come error level il numero corrispondente alla lettera dell'unità altrimenti 0 se non viene trovato il file...
Ti serve esplicitamente per DOS ? Non so se ho un compilatore DOS sotto mano...

biondaaa
30-01-2003, 16:28
Uaaa ... magari

e se magari si potesse usare dall'Autoexec.bat con un parametro che indica il nome del file da cercare ed un altro che indica l'intervallo di unità da cercare, sarebbe eccezionale ...tipo:



......
......
a:\MSCDEX.exe d:\ddsds.ds L:\M
A:\progrmma.exe file.txt m-q

if errorlevel 1 goto m:
.....
if errorlevel 5 goto q:

m:
echo L'unità che contiene il file è M:

n:
echo L'unità che contiene il file è N:
....

etc


è da usare con il DOS Windows95
fammi sapè :)

cionci
30-01-2003, 18:50
Mi ci vogliono 10 minuti a farlo...però devo recuperare il compialtore per DOS...perchè anche se è il DOS di Windows non credo che possa far partire un programma a 32 bit...
Nel dubbio intanto te lo invio fatto con il compilatore che ho...
Mi metto a farlo...

biondaaa
30-01-2003, 19:44
GRAZIEEEEE

cmq devo far partire GHOST.exe per DOS dqe non credo che sia 32 bit

:)

rimango in attesa

cionci
30-01-2003, 19:44
Ecco qua...

Si usa in questo modo :

FindFile nomefile A Z

A e Z sono ovviamente le unità di partenza e di fine della ricerca...

Si possono specificare anche percorsi :

FindFile \pippo\pluto.html C Y

Ho allegato i sorgenti se a qualcuno interessano...
Riguardo al compilatore a 16 bit...appena lo trovo ricompilo il sorgente...comunque prova così :)

biondaaa
30-01-2003, 20:57
Ua :eek:

io lo userò da AUTOEXEC

dqe da come ho capito


PROVO SUBITO e ti fo sapè
***aspè.......provato .....per ora sembra funzionare alla grande !!!!!!

devo però provarlo 1 attimo nel caso concreto
a tra poco



per ora
thx a lot

:cool:

cionci
30-01-2003, 21:02
Ecco la versione a 16 bit :)

biondaaa
30-01-2003, 23:02
uee

ti ringrazio

infatti la ver a 32 bit non girava in DOS, ma solo in shell del Windows

SFORTUNATAMENTE la ver a 16 bit gira si correttamente,

MA non riesce a gestire ( a contrario della ver a 32 bit ) l'accesso ad un drive 'vuoto'

Inesorabilmente restituisce la domanda Abort,Fail,Retry quando inizia a controllare i vari drive ed incontra quelli vuoti :(

possibile che non se ne esca ?!?

spero di avere presto tue buone nuove :)

cionci
31-01-2003, 08:40
Guardo se c'è il modo di controllare se un drive è vuoto o no, ma dubito...

cionci
31-01-2003, 08:50
Comunque il fatto che appaia "Abort, retry, continue" è un fatto intrinseco del DOS...infatti la versione a 16 bit usata sotto Windows non fa di questi casini...

cionci
31-01-2003, 13:25
Purtroppo non sono riuscito ad evitare che apparisse il messaggio...mi dispiace, ma non so come fare... Credo che l'unico modo sia quello di sfruttare qualche routine assembler per accedere alle varie unità, ma non saprei da quele interrupt partire...

biondaaa
31-01-2003, 15:19
vuoi dare 1 occhiata a questo eseguibile ?

in pratica lanciato da Autoexec ti restituisce nella variabile
CDROM
proprio la lettera dell'unita cdrom contenente un disco con (forse) il file ghost.exe all'interno

provalo

cionci
31-01-2003, 15:54
E' un eseguibile....ci posso fare ben poco...

biondaaa
01-02-2003, 21:02
...però dimostra che si puo' bypassare il problema. :)

scusa 1 attimo..

AIUUUTOOOOOOOOOOOOOOOOOOOOO

qualcuno puo' darci 1 mano ?!?!? :cry:

cionci
02-02-2003, 19:44
Originally posted by "biondaaa"

...però dimostra che si puo' bypassare il problema. :)

Che sia possibile lo so anche io, ma ci vuole un bellos tudio dietro per trovare le routine in assembler per fare queste cose...

etti64
23-05-2012, 16:17
è possibile avere il sorgenti di questo programmino