Skocz do zawartości

Wysuwanie cdromu za pomocą pliku .bat


Recommended Posts

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ę.

Link to post
Share on other sites
  • 2 tygodnie później...

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 przez penknife
Link to post
Share on other sites
  • 4 tygodnie później...

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? 
Link to post
Share on other sites
@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

Link to post
Share on other sites

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ą.

Gość
Odpowiedz w tym wątku...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...