[Batch] Überprüfen ob CD eingelegt ist

  • #1
F

flashgod

Guest
Hallo,

ich hab schon mehrere ansätze aber noch keine Lösung.
Ich will kontrollieren ob eine CD bzw Diskette eingelegt ist.

Mein ansatz war folgender
dir a: >chk.txt
Wenn datei leer nix eingelegt.. leider hab ich nix zum überprüfen der datei größe gefunden. Könntet ihr mir weiterhelfen oder gleich einen besseren ansatz zeigen?

Danke
 
  • #2
  • #3
Das ist ganz schlecht.. dann muss es anderst irgendwie gehen.
Den es sollte mit einer ganz simplen batch gehen ohne zusatz tools.

Vielleicht könnte ein Crack mit diesem ansatz etwas anfangen.

Ich erstalle ja eine liste aller Dateien auf der CD bzw Diskette
dir a: >chk.txt
nun könnte ich diese mit Find kontrolliern.
Wenn keine CD bzw Diskette eingelegt war ist die datei leer
Wenn doch steht da immer das Wort Datei

Jetz bräuchte ich nur noch die richtige syntax für etwas das ungefähr so aussieht.

IF Find /i /c Datei chk.txt == 1 Echo CD eingelegt

Vielleicht jetzt jemand eine idee?

Vielen dank für eure hilfe!
 
  • #4
wieso testest du das nicht einfach mal aus ... der ansatz mit dir a: ist ja schon mal nicht falsch. wenn kein lesbares medium im laufwerk drin ist gibt ein einfaches dir a: folgenden text aus Das Gerät ist nicht bereit. also kannst du in der umleitungsdatei mit find nach dem text Das Gerät ist nicht bereit. suchen und so wie du es schon schreibst, weiter entscheidungen davon abhängig machen ... das selbe gillt für cd-laufwerke, dvd-laufwerke, wechseldatenträger usw.

greetz

hugo
 
  • #5
Ich weiß schon das ich naaaaah dran bin.
Aber ich komm mit der IF abfrage nicht klar.

Progge normal nur mit VB und da geht es halt so wie ich will.
Mit Batch bekomme ich halt mit dieser abfrage einenen fehler

IF Find /i /c Datei chk.txt == 1 Echo CD eingelegt

Mir müsste nur jemand sagen wie ich eine datei nach einen bestimmten string durchsuche, wenn dieser da ist Goto x wenn nicht Goto y.

Oder gibt es in Batch einen Error event wenn nix eingelegt ist bringt er ja einen fehler.. das man vielleicht darauf zurück greift?

Danke für eure hilfe
 
  • #6
dir a: >chk.txt wenn keine diskette eingelegt ist gibt windows den satz Das Gerät ist nicht bereit. aus und durch die umleitung > wird dies in die datei chk.txt gecshrieben. nun kannst du mit find nach dem satz suchen und zwar ganz einfach so

find Das Gerät ist nicht bereit.  < chk.txt > Gerät_nicht_bereit.txt

duch den winkel < wird die datei durch find nach dem in stehenden text durchsucht und durch den > winkel schreibst du den text nochmal in eine datei namens Gerät_nicht_bereit.txt. nun kannst du mit if exist nach der datei fragen und dann ein echo ausgeben oder sonstwas machen. die batch siet dann so aus

@echo off
dir a: > chk.txt
find Das Gerät ist nicht bereit.  < chk.txt > Gerät_nicht_bereit.txt
if exist Gerät_nicht_bereit.txt echo Bitte Diskette/CD in Laufwerk einlegen ...

das packst du in eine .bat datei und gut ist ... übrigens: die genaue syntax zu den einzelnen batchbefehlen gibt es in der windowshilfe ...

greetz

hugo
 
  • #7
Hallo,

Auf dem root der CD eine Datei anlegen cd (mit oder ohne Inhalt)

mit folgendem Befehl wird die existenz abgeprüft und in eine Variable geschrieben:

Code:
for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%a:\cd set CDROM=%%a:

Gruß
Sven
 
  • #8
Danke euch beiden

Mit beiden Tipps werd ich es auf jedenfall schaffen!
 
  • #9
Hallo, jetz noch ein kleines Problem.

Es klappt es alles super.

Bis auf diese kleinigkeit dieser Befehl:
find Das Gerät ist nicht bereit. < chk.txt > Gerät_nicht_bereit.txt

Erstellt mir immer die Datei, In dem fall er findet den Text schreibt er das Suchergebnis hinein. Wenn er es nicht findet erstellt er eine leere datei.. kann man das irgendwie umgehen ? Sonst klappt das ganze wieder nicht :'(

Aber nochmals danke für eure hilfe ihr seid super!
 
  • #10
Glaub mir, mit einer Batch bekommst Du das nicht vernünftig hin. Mit obigem Tool kannnst Du die Errorlevel auswerten.
Nichtsdestotrotz schreib ich Dir jetzt mal was hin, womit es zumindest geht:

@echo off
dir a: | find Verzeichnis>a_chk.bat
echo set verz=%%0>verzeichnis.bat
call a_chk.bat
del verzeichnis.bat
del a_chk.bat
if %verz%/==/ echo Keine Diskette eingelegt...
if %verz%/== Verzeichnis/ echo Diskette ist eingelegt...
pause

Bei nicht eingelegter Diskette kommt allerdings noch eine unschöne Systemmeldung hinzu, die Du nicht zum Verschwinden bringst: Ein an das System angeschlossenes....blabla
Das funktioniert so nur unter XP, andere Betriebssysteme bringen andere Meldungen, die im Einzelfall ermittelt werden müssen.
 
  • #11
Wow Super

Funktioniert wie ich vor hatte!!!
Many thx, wenn du noch die lust hast könntest du das ganze noch ein bischen Kommentiern?

Ich tu mir noch extrem schwer mit der Syntax und den Sonderzeichen..

Wär super nett. danke!
 
Thema:

[Batch] Überprüfen ob CD eingelegt ist

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben