Batch Datei und Exist

vom 20.06.2008, 18:52 Uhr

Hallo,

ich schreibe gerade ein Batch-Script und stehe vor einem kleinen Problem. Das Script soll einfach Überprüfen, ob eine bestimmte Datei auf einer SD-Karte ist, wenn nicht, soll es den Benutzer auffordern, die Karte einzulegen, wenn ja, soll er etwas damit machen.

Mein Script funktioniert jetzt schon sehr gut, allerdings gibt es noch Probleme, wenn sich keine SD-Karte im Laufwerk befindet. Aber zuerst der betreffende Teil meines Scripts:

Code: Alles auswählen
if not exist H:\datei.doc goto missing
if exist H:\datei.doc goto exists

Wie gesagt funktioniert die Überprüfen, es erscheint bloß eine hässliche Windows-Fehlermeldung, dass sich kein Datenträger im Laufwerk befindet und ich gefälligst einen einlegen solle. Diese Meldung ist mir durchaus recht, allerdings hätte ich diese Fehlermeldung lieber in der Batch-Datei geschrieben, als sie mir von Windows ausgeben zu lassen.

Gibt es eine Möglichkeit diese Meldung zu verhindern, bzw. über die Batch-Datei zu überprüfen, ob ein Datenträger im Laufwerk vorhanden ist?

Benutzeravatar

» NeoUser » Beiträge: 311 » Talkpoints: 8,49 » Auszeichnung für 100 Beiträge



Ich würde es anders probieren:

Code: Alles auswählen
if exist H:\datei.doc goto exists
echo Bitte Karte einlegen

Dann kannst Du Dein Skript immer noch so programmieren, dass es auf die nicht eingelegte Karte reagiert.

» JotJot » Beiträge: 14058 » Talkpoints: 8,38 » Auszeichnung für 14000 Beiträge


Hallo,

danke für deine Antwort, aber leider behebt das in keinster Weise mein Problem, sondern verschönert lediglich den Code. Das Problem liegt daran, dass er durch die exist-Abfrage versucht auf den Datenträger zuzugreifen.

Wenn dieser nicht eingelegt ist, geht die Anfrage ins Leere. Die Batch-Datei erkennt dann zwar, dass die Datei nicht existiert, allerdings muss man vorher die Windows-Fehlermeldung mit Weiter oder Abbrechen bestätigen. Es geht mir darum diese Fehlermeldung wegzubekommen.

Dazu bräuchte ich vermutlich einen anderen Befehl als exist, der überprüft, ob überhaupt ein Datenträger im Laufwerk ist, ohne einen Lesezugriff auf den selben zu veranlassen.

Benutzeravatar

» NeoUser » Beiträge: 311 » Talkpoints: 8,49 » Auszeichnung für 100 Beiträge



Hast du schon mal probiert, die Fehlermeldung mit errorlevel abzufangen?
Alternativ könntest Du mit

Code: Alles auswählen
CTTY nul
die Bildschirmanzeige ausschalten und mit
Code: Alles auswählen
CTTY con
wieder einschalten.

So fit bin ich leider mit Batch-Dateien auch nicht mehr, aber vielleicht hilft Dir diese Site http://home7.inet.tele.dk/batfiles/ weiter, da gibt es die Kommandos gut aufgelistet.

» JotJot » Beiträge: 14058 » Talkpoints: 8,38 » Auszeichnung für 14000 Beiträge



Hallo,

danke für deinen Vorschlag, aber die bat-Datei wird angehalten, weil der Befehl exist nicht abgeschlossen ist. Die Möglichkeit mit CTTY sieht nicht so schön aus, weil nicht nur die Bildschirmanzeige, sondern auch die Tastatureingabe blockiert wird.

Ich habe die Datei allerdings gerade getestet und da hat es ohne Fehlermeldungen funktioniert. Das Problem tritt nur auf, wenn die SD-Karte sich schoneinmal im Laufwerk befunden hat und dann entfernt wurde. Ich denke das liegt daran, dass sie nicht richtig abgemeldet wird, aber das ist ein anderes Problem, zu dem ich einen eigenen Thread eröffnen werde.

Benutzeravatar

» NeoUser » Beiträge: 311 » Talkpoints: 8,49 » Auszeichnung für 100 Beiträge


Hi,
eine weitere Möglichkeit, die Fehlermeldung zu untergrücken, ist ein vorangestelltes

Code: Alles auswählen
Echo Off

Damit kanst du die Bildschitmausgane und die fehlermeldung etwas eleganter ausblenden.

Wenn nur die Ausgabe der eienen scriptzeile ausgeblendet werden soll, dann kann man auch ein @-Zeichen davor stellen, in deinem Fall also:
Code: Alles auswählen
@if not exist H:\datei.doc goto missing


mfg Qselma

» Qselma » Beiträge: 46 » Talkpoints: 0,19 »


Ähnliche Themen

Weitere interessante Themen

^