Igoro00pl 1 Napisano 26 Września 2016 Udostępnij Napisano 26 Września 2016 Cześć. Piszę właśnie taki mały skrypt, który będzie wgrany na płytę. Po zakończeniu swoich czynności chciałbym, aby płyta na której jest wgrany ten plik wysunęła się. I nie wiem co dograć, żebym miał taką możliwość. I od razu mówię, chciałbym, żeby program sprawdzał na jakiej partycji się znajduje, żebym mógł używać tego na różnych komputerach. Z góry dziękuję. Cytuj Link to post Share on other sites
penknife 4 Napisano 9 Października 2016 Udostępnij Napisano 9 Października 2016 (edytowane) sugeruję taki kod: @echo off setlocal rem tutaj wpisujesz co ma zrobić rem po wykonaniu powyższych wysuń call :ejectCD %~d0 endlocal exit /b 0 goto :eof :ejectCD if not exist "%tmp%\_ejectCD.vbs" ( echo 'ejectCD.vbs driveLetter: echo Function ejectDrive(drv^) echo drv=mid(drv,1,2^) echo set objApp=CreateObject("Shell.Application"^) echo set objF=objApp.NameSpace(^&H11^&^) echo for each item in objF.Items(^) echo if objF.GetDetailsOf(item,1^)="CD Drive" then echo iLabels=split(objF.GetDetailsOf(item,0^),"("^) echo if Ucase(drv ^&")"^)=iLabels(1^) then echo set verbs=item.Verbs(^) echo set verb=verbs.Item(verbs.Count-4^) echo verb.DoIt(^) echo item.InvokeVerb replace(verb,"&",""^) echo ejectDrive=0 echo exit function echo end if echo end if echo next echo ejectDrive=-1 echo End Function echo WScript.Quit(ejectDrive(WScript.Arguments(0^)^)^) )>"%tmp%\_ejectCD.vbs" cscript //NoLogo //T:10 "%tmp%\_ejectCD.vbs" %* >nul 2>nul &&echo. ||echo Err(!ErrorLevel!) eject %* Edytowane 9 Października 2016 przez penknife Cytuj Link to post Share on other sites
Igoro00pl 1 Napisano 1 Listopada 2016 Autor Udostępnij Napisano 1 Listopada 2016 Sorry za takie opóźnienie w odpowiedzi ale całkowicie zapomniałem o tym forum. W każdym razie, wpisałem sobie ten kod i program po wykonaniu moich poleceń, wyłącza się. Ustaliłem dodając "pause" po kolei, że po call :ejectCD %~d0 wyskakuje błąd: ejectCD' is not recognized as an internal or external command, operable program or batch file. Muszę wgrać program ejectCD czy co? Cytuj Link to post Share on other sites
madagascar3 4 Napisano 1 Listopada 2016 Udostępnij Napisano 1 Listopada 2016 @if (@CodeSection == @Batch) @then @echo off setlocal cscript /nologo /e:JScript "%~f0" goto :EOF @end // end batch / begin JScript hybrid chimera // DriveType=4 means CD drive for a WScript FSO object. // See http://msdn.microsoft.com/en-us/library/ys4ctaz0%28v=vs.84%29.aspx // NameSpace(17) = ssfDRIVES, or My Computer. // See http://msdn.microsoft.com/en-us/library/windows/desktop/bb774096%28v=vs.85%29.aspx var oSH = new ActiveXObject('Shell.Application'), FSO = new ActiveXObject('Scripting.FileSystemObject'), CDdriveType = 4, ssfDRIVES = 17, drives = new Enumerator(FSO.Drives); while (!drives.atEnd()) { var x = drives.item(); if (x.DriveType == CDdriveType) { oSH.NameSpace(ssfDRIVES).ParseName(x.DriveLetter + ':').InvokeVerb('Eject'); while (x.IsReady) WSH.Sleep(50); } drives.moveNext(); } pause U mnie w laptopie ten kod działa Cytuj Link to post Share on other sites
Recommended Posts
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.