rastikf
Goto Top

Batch Laufwerk abfragen

Hallo, ich würde gerne wissen, ob es eine Möglichkeit gibt den Status eines CD/DVD Lauwerkes mit einer Batch abzufragen! Also ich möchte mit einer Batch ein bestimmtes Programm starten sobald eine CD/DVD eingelegt wird!Es geht mir nur darum mit der Batch das Ereignis (CD wird eingelegt) abzufragen und je nach ausgabe zu handeln. ist sowas möglich???Wenn nicht, kann ich das mit AutoIt oder Delphi realisieren?Hab da auch schon ein paar erfahrungen, alledings brauch ich auch da hilfe...

Vielen dank schonmal für euro Antworten

MFG
Rasti

Content-Key: 119260

Url: https://administrator.de/contentid/119260

Printed on: April 23, 2024 at 19:04 o'clock

Member: TsukiSan
TsukiSan Jun 28, 2009 at 17:15:02 (UTC)
Goto Top
Hallo Rasti,

hier ein einfacher Code in VBS:
Damit kannst du abfragen,ob das CD-Laufwerk
1) vorhanden ist und
2) ob ein Datenträger eingelegt ist
Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set colDrives = objFSO.Drives


For Each objDrive in colDrives
    If objDrive.IsReady = True and objDrive.DriveLetter = "H" Then  
        Wscript.Echo "Drive letter: " & objDrive.DriveLetter  
        Wscript.Echo "Free space: " & objDrive.FreeSpace  
    End If
Next

Für "H" gibst du bitte deinen aktuellen Laufwerksbuchstaben für dein CD-Laufwerkerk ein und im Anschluß noch in der "If"-Bedingung an, was geschehen soll.

Hoffe, ich konnte helfen

Gruß

Tsuki
Member: rastikf
rastikf Jun 28, 2009 at 17:29:57 (UTC)
Goto Top
Hey Tsukisan,
vielen Dank schonmal für deine Antwort! So wie ich dieses Script verstehe, fragt es ab ob eine CD im Laufwerk ist, und wenn ja führt es die gegebene Aktion aus!soweit so gut, bloß was ist wenn die CD schon drin liegt, z.b. wenn ich nach einem Standby mit eingelegter CD das System starte, würde es das ja auch ausführen!Das will ich aber nicht!Ich bräuchte etwas was nur auf die "CD Einlegen"-Funktion reagiert!
Falls ich das falsch verstehe bitte ich um einen Hinweis

Danke
MFG
Rasti
Member: TsukiSan
TsukiSan Jun 28, 2009 at 17:37:36 (UTC)
Goto Top
Hallo Rasti,

wer lesen kann ist klar im Vorteil face-wink
Ich hatte nicht genau deine Frage gelesen, sondern mich nur darauf konzentriert, ob es möglich ist, den Status des CD-Laufwerks zum aktuellen Zeitpunkt des Startens von meinem Script zu erfassen.
"Asche über mein Haupt"! Sorry!
Mit meinem Script ist es nicht möglich, den permanenten Status abzufragen und ggf. Reaktionen auszuführen.
Dann müßte man das ganze in einer "For Next"-Schleife laufen lassen und die aktuellen Daten zwischenspeichern.
Das werden dann ein paar Zeilen mehr.
Ich persönlich würde mir sowas dann in VB6 schreiben.
Aber dann braucht man wieder den Developer dafür und der ist auch nicht frei verfügbar.
Mal schauen, ob unsere anderen Kollegen nicht einen Batch oder Script-Tipp haben.

Gruß

Tsuki
Member: rastikf
rastikf Jun 28, 2009 at 17:45:23 (UTC)
Goto Top
face-smile kein Ding, ja denn genau an dem sind meine Vorhaben auch alle gescheitern. Denn ich habe nichts gefunden was so einen Fall überprüfen würde!Trotzdem vielen Dank für deine schnelle Antwort!Aslo wenn jemand Vorschläge hat, wäre ich sehr Dankbar!
Member: TsukiSan
TsukiSan Jun 28, 2009 at 17:53:34 (UTC)
Goto Top
Naja,

im groben sieht es so aus, daß man ein Programm startet,
es beim Start den aktuellen Status "merken" läßt und dann läuft es die ganze Zeit im Hintergrund. Je nach "Abfrage des Status"-Intervalls benötigt es Resourcen, welche dann auf die Rechenleistung des jeweiligen Rechners Auswirkungen hat.
OK!, Windows bekommt auch mit, ob sich Hardware o.ä. andert, ohne den Prozessor total auszulasten, aber das ist Frage wie man sein Progi gestaltet.
Also mal sehen, wie sowas als Batch oder Script "passieren" kann. Aber wie gesagt, ich bin kein Freund von diesen "endlos-Dingern"

Tsuki
Member: miniversum
miniversum Jun 28, 2009 at 18:04:08 (UTC)
Goto Top
Prinzipiell würde ich das nicht mit einem Programm/Batch oder sonst sowas machen was die ganze Zeit im Hintergrund läuft.
Nutze doch die autoplay Funktion von Windows.
In den Einstellungen des Laufwerks kansnt du dort einstellen welches Programm automatisch beim einlegen eines bestimmten CD Typs gestartet werden soll. Ist dein Programm da ncith dabei kannst du es mit z.B. tweakUI hinzufügen.
Member: rastikf
rastikf Jun 28, 2009 at 18:07:03 (UTC)
Goto Top
Genau, dem stimme ich vollkommen zu!Ich mag dieses ewig laufen auch nicht!Ich würde ja gerne auf so eine Windows Abfrage reagieren wollen, bloß die eingebaute Autostartfunktion, (ich hab mir auch schon einen eigenen Autostart Handler gebastelt unter Vista) klappt leider nicht immer zuverlässig!Aber diese Abfrage muss ja immer kommen, bloß kenne ich nichts womit ich darauf reagieren könnte, wie gesagt sei es mit Batch,VBScript und ich den anderen Hochsprachen kenne ich mich nicht geug aus um sowas zu realisieren!
MFG
Rasti
Member: rastikf
rastikf Jun 28, 2009 at 18:13:49 (UTC)
Goto Top
Hey Danke für deine Antwort, aber wie schon in meinem Vorherigen Post beschrieben, funktioniert sowas leider nicht immer!Das war auch meine erste Idee und ich habs unter Vista versucht, hab mir da mit Registry Einträgen nen neuen "PlayDVDMovieOnArrival" und die entsprechenden AutoplayHandler geschrieben, bloß hab ich die Erfahrung gemacht das es leider nicht immer funktioniert, und deswegen such ich nach einer anderen Löung

MFG
Rasti
Member: miniversum
miniversum Jun 28, 2009 at 18:58:31 (UTC)
Goto Top
Naja Wenns Batch sein soll könnte es so funktioniere (ungetestet):
@echo off
set LW=H:
rem Initialstate hermitteln
dir %LW% >NUL 2>NUL
set LWState=%errorlevel%
rem prüfung in Schleife (im 5s Intervall)
:loop
ping -n 5 localhost >NUL
dir %LW% >NUL 2>NUL
if %errorlevel% neq %LWState% (
set LWState=%errorlevel%
call:StCh%errorlevel%%LWState%
)
goto:loop

:StCh01 & rem CD eingelegt
echo CD wurde eingelegt
goto:loop

:StCh10 & rem CD ausgeworfen
echo CD wurde ausgeworfen
goto:loop
Member: rastikf
rastikf Jun 28, 2009 at 22:03:19 (UTC)
Goto Top
Danke, ich werde es testen und die Ergebnisse Posten wie es sich verhällt!

MFG
Rasti
Member: rastikf
rastikf Jun 29, 2009 at 08:19:54 (UTC)
Goto Top
Hey miniversum,
sieht sehr gut aus. Tut bis jetzt genau das was ich möchte! Vielen Dank nochmal, habt mir sehr geholfen!

MFG
Rasti
Member: evinben
evinben Sep 02, 2011 at 17:05:24 (UTC)
Goto Top
Hallo,

wie könnte die Hardware-ID bzw. VID/PID aller Laufwerke abgefragt werden, um sicherzustellen, dass es sich exakt um denjenigen Datenträger handelt, der individuell abgearbeitet werden soll? Der nächste Schritt wäre zu erfahren, welche Laufwerksbuchstaben denen momentan vergeben wurden, um die eine absolute Zuordnung des Laufwerksbuchstabens zu dem tatsächlichen physikalischen Datenträger (Hardware-IDs bzw. VID/PID) zu erreichen.
Die Laufwerksbuchstaben können sich wechseln, wenn Konflikte entstehen, auch selbst dann, wenn diese unter Datenträgerverwaltung bewusst festgelegt wurden. Z. B. dem externen Datenträger Nr. 4 wurde der Laufwerksbuchstaben H:\ zugewiesen. Diese wurde entnommen. Nach kurzer Zeit wurde einem neuen Datenträger Nr. 5 absichtlich derselbe Laufwerksbuchstaben H:\ zugewiesen (aus Backup- und Synchronisierungsgründen) usw. für die restlichen. Es kommt oft vor, dass sogar mehrere gleichzeitig angeschlossen werden, um diese zu bearbeiten. Die Laufwerksbuchstaben sind flüchtig und dementsprechend keine richtige Lösung zur einer sicheren Zuordnung.

Per Batch soll nun erst abgefragt werden, um welchen Datenträger es sich genau handelt, um mit der "if"- Bedingung die entsprechende Aufgabe für den jeweiligen Datenträger zu starten. Es ist dabei nicht erlaubt (es wäre reine Katastrophe), wenn aus irgendwelchem Grund der falsche Datenträger behandelt werden würde. Daher ist eine Abfrage nach Hardware-IDs bzw. anderen Geräte-Merkmale für eine sichere Zuordnung unabdingbar. Einige Datenträger besitzen leider keine Seriennummer. Wobei eine Abfrage nach nur Hardware-ID wäre in meinem Fall ausreichend, da alle Datenträger von unterschiedlichen Herstellern mit unterschiedlichen Modellen sind und somit unterschiedliche VID und PID aufweisen (Vendor- und Product-IDs).

Hier benötige ich wieder von euch eine Hilfe, wo ich nach etlichen Recherchen alleine leider nicht weiter kommen konnte.

Gruß