中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-07 05:35
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]有能关闭光驱的bat吗 查看 1,074 回复 9
楼 主 [求助]有能关闭光驱的bat吗 发表于 2008-01-09 11:51 ·  中国 天津 联通
初级用户
积分 22
发帖 10
注册 2008-01-01 17:31
18年会员
UID 107408
性别 男
状态 离线
想实现这么一个想法:
到正点的时候,几点光驱就出来几次,并发出几声滴滴的响声.
谢谢!
2 发表于 2008-01-09 12:58 ·  中国 福建 泉州 石狮市
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
23年会员
UID 586
性别 男
来自 福建泉州
状态 离线
论坛找下,记得之前有谁发过一个开关光驱的命令的.
可以用下.

发出几声滴滴的响声.用echo就可以了.
echo.
QQ:366840202
http://chenall.net
3 发表于 2008-01-09 13:06 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
bat
@echo off
ping/n 2 127.1>nul&cls&set/p= .<nul
ping/n 2 127.1>nul&cls&set/p= . .<nul
ping/n 2 127.1>nul&cls&set/p= . . .<nul
mshta "javascript:new ActiveXObject('WMPlayer.OCX').cdromCollection.Item(0).Eject();window.close();"

vbs
set slz = CreateObject ("Wscript.Shell")
set wmp = CreateObject("WMPlayer.ocx")
set cdrom = wmp.cdromCollection
if cdrom.Count >= 1 then
for i = 0 to cdrom.Count - 1
cdrom.Item(i).Eject
next
end if
slz.Run "sndrec32 /play /close C:\Windows\Media\Notify.wav", 0, True


补充说明双光盘.Item(0)或(1)
set slz = CreateObject ("Wscript.Shell")
set wmp = CreateObject("WMPlayer.ocx")
set cdrom = wmp.cdromCollection
cdrom.Item(0).Eject '或(1).....
slz.Run "sndrec32 /play /close C:\Windows\Media\Notify.wav", 0, True


[ Last edited by fastslz on 2008-1-9 at 01:21 PM ]
第一高手 第二高手

4 发表于 2008-01-09 13:11 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
哦至于整点打开,用at命令(计划任务),因为批处理也好vbs也好一直保留进程的
纯dos建议搜索帖子
第一高手 第二高手

5 发表于 2008-01-09 13:14 ·  中国 福建 泉州 石狮市
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
23年会员
UID 586
性别 男
来自 福建泉州
状态 离线
收藏下,mshta
挺方便的.学习了.
QQ:366840202
http://chenall.net
6 发表于 2008-01-12 16:36 ·  中国 天津 联通
初级用户
积分 22
发帖 10
注册 2008-01-01 17:31
18年会员
UID 107408
性别 男
状态 离线
谢谢!不过没有达到我想要的目的。我想要的是关闭光驱的bat
7 发表于 2008-01-13 00:08 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
20年会员
UID 44210
状态 离线
后面一定要延时后 taskkill 掉 mshta.exe 进程,否则每执行一次就会多一个 mshta.exe 进程(不知为何 mshta.exe 进程不能自制动关闭)
而且启动 mshta 要用 start mshta "...... 启动,我的电脑上 mshta "...... 方式就卡住了,不能执行下一步
@echo off
set/p input=选择开/关光驱:
if /i "%input%" == "o" start mshta "javascript:with (new ActiveXObject('WMPlayer.OCX').cdromCollection.Item(0)){Eject();};window.close();"
if /i "%input%" == "c" start mshta "javascript:with (new ActiveXObject('WMPlayer.OCX').cdromCollection.Item(0)){Eject();Eject();};window.close();"
ping -n 3 0 >nul
taskkill /im mshta.exe /f>nul
pause
8 发表于 2008-01-13 00:23 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
原来加个Eject();就多个一开一关动作,vbs也是想单次Eject没法关闭
我这里不用杀mshta.exe进程的,能自动退出

set slz = CreateObject ("Wscript.Shell")
set wmp = CreateObject("WMPlayer.ocx")
set cdrom = wmp.cdromCollection

if cdrom.Count >= 1 then
for i = 0 to cdrom.Count - 1
cdrom.Item(i).Eject
next
end if

for i = 0 to cdrom.Count - 1
cdrom.Item(i).Eject
next

slz.Run "sndrec32 /play /close C:\Windows\Media\Notify.wav", vbhide
第一高手 第二高手

9 发表于 2008-01-13 00:30 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
晕~看mshta.exe的版本号 7.00.5730.13 (longhorn(wmbla).070711-1130)也就是IE7版本号,居然出现longhorn字样,微软也太水了...
第一高手 第二高手

10 发表于 2008-01-13 21:24 ·  中国 天津 电信
初级用户
积分 22
发帖 10
注册 2008-01-01 17:31
18年会员
UID 107408
性别 男
状态 离线
谢谢大家
论坛跳转: