Forum: PC-Programmierung Batch file Problem beim USB Auswerfen


von Thomas K. (thomas_k502)


Lesenswert?

Hallo zusammen,

ich habe vereinfacht folgendes Problem:
Ich habe ein batch file geschrieben, welches ein Programm startet. Das 
Batchfile liegt auf einem USB Stick und wird von da gestartet. Das 
Programm liegt allerdings auf der Festplatte. Dieses Programm wiederum 
soll den USB Stick auswerfen. Leider funktioniert das nicht, da Windows 
sagt, dass das Programm vom USB Stick gestartet wurde. Das batch file 
schließt sich ordnungsgemäß, nachdem es das Programm gestartet hat, 
allerdings lässt sich der USB Stick nicht auswerfen.

Das batch file sieht so aus:
1
@echo on
2
3
start D:\Programm.exe
4
5
EXIT

Ich habe für Win XP, Win 7 und Win 10 das gleiche Phänomen. Kann mir 
jemand helfen? Vielen Dank im Voraus.

von c-hater (Gast)


Lesenswert?

Thomas K. schrieb:

> Ich habe für Win XP, Win 7 und Win 10 das gleiche Phänomen. Kann mir
> jemand helfen?

Der einzige mögliche Ausweg: das Auswerfprogramm muss mit dem Auswerfen 
warten, bis der Batchprozess terminiert hat.

Was ich aber nicht verstehe: Wenn das Auswerfprogramm ohnehin auf dem 
Ziel-PC ist, warum kann das Batchfile nicht auch dort liegen? Damit 
würde sich das Problem von ganz allein in Luft auflösen...

von WIRO (Gast)


Lesenswert?

Die Frage von c-hater ist leider noch unbeantwortet, wäre vielleicht die 
Lösung.
Aber probiere mal:
1
cd /d D:\
2
start D:\Programm.exe
3
exit

Gruß
WIRO

von xyz (Gast)


Lesenswert?

> Kann mir jemand helfen?

Da kann dir keiner helfen.

Solange "Programm.exe" aktiv ist, kann man logischerweise
den Datenträger nicht entfernen...

Darauf sollte auch ein Hauptschöler kommen.

von Peter D. (peda)


Lesenswert?

Die cmd.exe führt eine Batch zeilenweise aus, d.h. sie merkt sich die 
Nummer der aktuellen Zeile. Sie öffnet die Batch nach jedem Befehl 
erneut. Daher kann man ihr nicht die Batch unterm Hintern wegziehen.

von Adam P. (adamap)


Lesenswert?

Versuch das:
1
cd /d D:\
2
start /I D:\Test.exe
3
exit
Bei mir unter Win10 funktioniert es.

xyz schrieb:
> Solange "Programm.exe" aktiv ist, kann man logischerweise
> den Datenträger nicht entfernen...

So ein Bullshit!
Das Programm muss einfach nur in einer seperaten "Instanz" gestartet 
werden.

xyz schrieb:
> Darauf sollte auch ein Hauptschöler kommen.

"Hauptschöler" ja gut, das erklärt wohl deine Aussage.

: Bearbeitet durch User
von Thomas K. (thomas_k502)


Lesenswert?

WIRO schrieb:
> cd /d D:\
> start D:\Programm.exe
> exit


Die Befehlskette funktioniert. Vielen Dank :)

von c-hater (Gast)


Lesenswert?

Thomas K. schrieb:

> WIRO schrieb:
>> cd /d D:\
>> start D:\Programm.exe
>> exit
>
>
> Die Befehlskette funktioniert.

Das ist mehr oder weniger Zufall.

Was MIRO getan hat, ist: er hat dafür gesorgt, das das aktuelle 
Verzeichnis des CMD-Prozesses, der deinen Batch abarbeitet, nicht mehr 
auf dem Stick liegt. Das schließt ein "störendes" Handle. Es gibt aber 
immer noch das Handle, über das der CMD-Prozess auf das Batchfile 
zugreift.

Und nun kommt es darauf an, was schneller ist: CMD mit dem Einlesen und 
ausführen von "exit" oder das von "start" gestartete Programm zum 
Auswerfen des Sticks.

Sprich: du hast nur sicheres Scheitern gegen mögliches Scheitern 
getauscht. OK, ist ein Fortschritt. Aber kompetente Problemlösung geht 
anders...

von Peter D. (peda)


Lesenswert?

c-hater schrieb:
> Das ist mehr oder weniger Zufall.

Man könnte mit START eine lokale Batch starten, die mit den Befehl 
TIMEOUT eine Zeit wartet, damit die aufrufende Batch sicher beendet.

von WIRO (Gast)


Lesenswert?

Peter D. schrieb:
> ...die mit den Befehl TIMEOUT eine Zeit wartet...

Der Befehl TIMEOUT ist standardmäßig unter Windows XP nicht vorhanden. 
Die Lösung scheint der TO aber auch für XP zu benötigen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.