Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Batch-Befehl gesucht

Kolti / 13 Antworten / Baumansicht Nickles

An die alten Hasen, die noch wissen, was DOS ist.


Ich suche einen Befehl, mit dem ich den Fehler abfangen kann, der beim Ansprechen eines Laufwerks auftritt, wenn keine Diskette drin ist.


Nicht bereit beim Lesen von Laufwerk A:
Abbrechen, Wiederholen, Fehler?


Ich brauche an dieser Stelle keine Ausgabe, sondern einen Errorlevel, mit dem ich dann verzweigen kann.


 

bei Antwort benachrichtigen
cfreak Kolti „Batch-Befehl gesucht“
Optionen

Hi Kolti,

MS-DOS kennt keinen Befehl für diesen Zweck, aber man kann sich
ein kleines Proggi in Assembler oder in C schreiben,
das über MS-DOS Interrupts diverse Laufwerksstati erkennen kann
und entsprechende Ergebnisse als Errorlevel zurück gibt.
Ein schönes Beispiel in C findest Du unter:

http://groups.google.com/groups?hl=de&lr=&ie=UTF-8&threadm=Pine.BSD.3.91.950404024811.3561A-100000%40Starbase.NeoSoft.COM&rnum=41&prev=/groups%3Fq%3Dfloppy%2Bgroup:comp.os.msdos.*%26start%3D40%26hl%3Dde%26lr%3D%26ie%3DUTF-8%26selm%3DPine.BSD.3.91.950404024811.3561A-100000%2540Starbase.NeoSoft.COM%26rnum%3D41

Gruss, Cfreak

bei Antwort benachrichtigen
Andreas42 cfreak „Hi Kolti, MS-DOS kennt keinen Befehl für diesen Zweck, aber man kann sich ein...“
Optionen

Sorry! Hängt in der falschen Ebene!

--------------

Hi!

Ist auch in Turbo-Pascal problemlos machbar. Wenn du ein Beispiel brauchst bzw. etwas mit Quelltexten anfangen kannst: ich hab' das mal selbst in einem Tool umgesetzt.

Die wichtigsten Zeilen im Quelltext zu suchen und hier zu posten, wäre kein Problem (ca. 20-30 Zeilen).

Bis denn
Andreas

[Diese Nachricht wurde nachträglich bearbeitet.]

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
cfreak Andreas42 „Sorry! Hängt in der falschen Ebene! -------------- Hi! Ist auch in Turbo-Pascal...“
Optionen

Hi Andreas,

klar geht das auch in Turbo-Pascal, Sorry.
Es geht grundsätzlich in allen Sprachen, von denen aus
MS-DOS Interrupts aufgerufen werden können.

Gruss, Cfreak

bei Antwort benachrichtigen
Andreas42 cfreak „Hi Andreas, klar geht das auch in Turbo-Pascal, Sorry. Es geht grundsätzlich in...“
Optionen

Hi!

Ich weiss. Ich hab' aus Versehen den beitrag zu deiner Antwort geschrieben und nicht zu Koltis Frage. Leider kann den beitrag nicht umhängen.

Der Hinweis und das Angebot wendet sich dehalb auch nicht an dich. ;-)

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Kolti cfreak „Hi Kolti, MS-DOS kennt keinen Befehl für diesen Zweck, aber man kann sich ein...“
Optionen

Hi.
Hat leider nicht funktioniert. Das Programm dort ist schon ein paar Tage alt und einige Befehle werden mit meinem C-Compiler nicht übersetzt. Vielleicht habe sich die Include-Dateien so verändert, daß es nicht mehr geht.
Leider verstehe ich auch nicht soviel davon, daß ich das selbst geradebiegen kann.

bei Antwort benachrichtigen
cfreak Kolti „@cfreak“
Optionen

Hi Kolti,

nicht den Kopf hängen lassen!
Ich habe unter
http://groups.google.com/groups?hl=de&lr=&ie=UTF-8&selm=2mu2k3%24q2l%40evitech.evitech.fi
eine einfachere Version gefunden.
Die Portierung auf MS Visual C 1.51 war einfach, die ersten Tests waren OK.
Leider konnte ich das Programm nicht so ohne weiteres auf einen aktuellen MS C Compiler portieren, offensichtlich fehlt da die
DOS Interrupt Unterstützung.
Wenn Du möchtest, kann ich Dir gerne das Executable (17KB) zumailen.

Gruss, CFreak.
Hier die Source:
---------------schnipp-----------------------
#include

bei Antwort benachrichtigen
Kolti cfreak „@cfreak“
Optionen

Kannst Du gerne machen.
Aber bitte das executable dann noch so umstricken, daß nur Laufwerk Z: abgefragt wird. Und bitte dabei schreiben, wie die Routine aufgerufen wird.
Meine Addy ist in der ViKa.

Thx
Kolti

bei Antwort benachrichtigen
cfreak Kolti „@cfreak gerne“
Optionen

Hi Kolti,

ich schicke Dir die Source und das Executable.
Aufrufsyntax ist: getdisk

bei Antwort benachrichtigen
Kolti Nachtrag zu: „Batch-Befehl gesucht“
Optionen

Ich habe mir den Quelltext aus dem Link runtergezogen. Irgendwo habe ich auch noch einen C-Compiler.
Werde ich wohl auf die Reihe bekommen. Ich denke, das hat was mit dem Interrupt 21 zu tun.

Genau genommen versuche ich in einer Batchdatei folgendes zu realisieren:

Ich speichere Daten ab auf verschiedenen CD-RW. Die Batchdatei stellt selber fest, welche der beiden CDs im Laufwerk ist und speichert dann aufgrund der Verzweigung die entsprechenden Daten ab.
Jetzt möchte ich eine weitere Verzweigung einführen und zwar soll die dann stattfinden, wenn gar keine CD im Laufwerk ist.
Bis jetzt habe ich da mit zwei Programmen gearbeitet, aber eleganter wäre natürlich alles in einem Programm.
Dafür brauche ich die Fehlermeldung, daß das Laufwerk aufgrund der fehlenden CD nicht einsatzbereit ist.
Unter DOS natürlich nicht leicht. Das haben schon andere erfolglos im Internet versucht.
Wenn Ihr die Lösung und evtl. das fertige Programm ;0)))))) habt, wäre ich natürlich sehr zufrieden.
Meine Addy ist in der ViKa.

Vielen Dank erstmal
Kolti

bei Antwort benachrichtigen
Andreas42 Kolti „Vielen Dank erstmal, Ihr Beiden“
Optionen

Hi!

Ich kann dir mein altes XFIND.EXE gerne mit Pascal-Quelltext zuschicken. Eigentlich vergleicht es zwei Textdateien, aber ich hab' dann mal für einen vergleichbaren Fall eine Möglichkeit eingabut, nach einer Datei zu suchen. Der Errorlevel ist dann 0 oder 1, jenachdem ob die Date gefunden wurde.

Hab's gerade nochmal getestet: mit Disketten klappts.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Kolti Andreas42 „Vielen Dank erstmal, Ihr Beiden“
Optionen

Aber bitte kompilieren, da ich kein Pascal habe.
Und auch die Syntax vom Aufruf mitgeben. Entscheidend ist, daß das Laufwerk Z: das maßgebliche ist.

Thx
Kolti

Addy ist in der ViKa

bei Antwort benachrichtigen
Andreas42 Kolti „Nehme ich gerne an.“
Optionen

Hi!

Mail ist unterwegs.

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Teletom Kolti „Batch-Befehl gesucht“
Optionen

Hi allerseits,

wenn es was NICHT-Selbstgestricktes sein darf:

XSET sehr einfach, sehr gut, sehr "fast" unverzichtbar"

http://www.simtel.net/pub/pd/54049.shtml

XSET test DRIVETEST a:
Erzeugt eine Environment-Variable TEST.
Falls keine Diskette eingelegt ist, steht nach dem Kommando Folgendes in der TEST-Variable:
NOTINSERTED - REMOVABLE - FLOPPY

Viel Spaß

Teletom

bei Antwort benachrichtigen