:: Dynamisch USB-LaufWerksbuchstaben rausfinden
FOR %%D IN (.) DO SET USBdev=%%~fD
SET USBdev=%USBdev:~,2%
:: sync ins Temp-Windows-Verzeichnis kopieren
copy sync.exe %temp%
:: Batch mit Aufruf im Temp-Verzeichnis erstellen
echo sync -e %USBdev% > %temp%\eject.bat
:: Ausführen
start %temp%\eject.bat
Leider funzt das so nicht (egal ob sync, unmount oder deveject). Das Problem scheint zu sein, dass er obige bat-Datei nicht beendet/schließt bei dem Aufruf von eject.bat und damit das Laufwerk noch gelocked ist. Ein "manueller" Aufruf der eject.bat im Temp-Verzeichnis bringt das gewünschte Ergebnis (also kein prinzipielles Problem).
Frage: Wie kann ich die eject.Bat starten ohne das die aufrufende Batch das Laufwerk blockiert?
Wäre super, wenn da jemand eine Lösung hätte - dann wäre ich nah an meinem Super-Comfort-Portable-Office
PS: Ich benutze als Tray-Menü für die Programme des Sticks PStart. Dort kann ich natürlich auch den absoluten Pfad zu der eject.bat angeben (wobei dann PStart natürlich in selbiger noch gekillt werden muss) und es funzt ebenfalls - dummerweise kann ich nicht die Variable %temp%\eject.bat angeben - absolut ist aber ungünstig, wenn man an einem anderen Rechner ist, wo Windows mal nicht auf c: liegt.
Wenn jemand also ein ähnliches USB-taugliches Menü kennt, bei dem die Angabe von Variablen möglich wäre... das wäre schon noch ne Alterntiv-Lösung (obwohl mir PStart gut gefällt).
So - wieder viel zu viel geschrieben, als das jemand drauf antwortet :mrgreen:
::Set USBdev variable to the current drive letter (WinNT)
FOR %%D IN (.) DO SET USBdev=%%~fD
SET USBdev=%USBdev:~,2%
:: Create-Dir in Windows-Temp-Folder and copy all files there
md %temp%\USB-Temp
copy CopyToTemp\*.* %temp%\USB-Temp\
:: Add Commands to "unmountUSB.bat" to Eject correct drive letter
ECHO %USBdev%\_Autostart\TrueCrypt.exe /d /q >>%temp%\USB-Temp\unmountUSB.bat
ECHO deveject.exe -EjectDrive:%USBdev% >>%temp%\USB-Temp\unmountUSB.bat
ECHO del %temp%\USB-Temp\*.* /Q >>%temp%\USB-Temp\unmountUSB.bat
:: Add Batch to mount TrueCrypt file
ECHO %USBdev%\_Autostart\TrueCrypt.exe /v "%USBdev%\data.tc" /lz /q /a /m rm /e>%temp%\USB-Temp\mountCrypt.bat
:: Start PStart from Temp-Dir :(
%temp%\USB-Temp\PStart.exe
In der unmountUSB.bat werden neben dem eject-Befehl noch alle möglichen auf dem USB-Stick vorhanden Dateien per pskill abgeschossen.
So funzt das, aber es ist natürlich nicht so schön, wenn das PStart-Tool von der Platte läuft
a) Weil die Menü-Änderungen verloren gehen (und eigentlich nicht möglich sind), wenn PStart lokal beim unmounten gelöscht wird - man muss es für Änderungen also immer seperat im CopyToTemp-Ordner öffnen.
b) Weil es nur mit einem Extra gemounteten Device (in diesem Falle ein durch TrueCrypt verschlüsseltes) funktioniert, wo ich dann Z:\Pfad\ProgName.exe sagen kann - es sei denn man würde die ganze config-Datei (PStart.xml) per Script dynamisch auf den korrekten Laufwerksbuchstaben anpassen.
Das essentielle Problem ist als, PStart auf dem Stick laufen zu lassen, dort einen Menüeintrag für eine ebenfalls auf dem Stick liegende Batch zu erstellen, die dann unmountUSB.bat im Tempfolder startet - diese aufrufende Batch muss einfach nach dem Aufruf beendet sein - isse aber ned (auch mit Exit nicht)