中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何用命令让手动弹出后的可移动驱动器再次加载
« [1] [2] »
作者:
标题: 如何用命令让手动弹出后的可移动驱动器再次加载 上一主题 | 下一主题
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『楼 主』:  如何用命令让手动弹出后的可移动驱动器再次加载

如何用命令让手动弹出后的可移动驱动器再次加载
即是让可移动驱动器再下出现..

原文
@echo off
for /f %%i in ('devcon findall usb* ^|find /i "usb mass storage"') do  devcon remove "@%%i"
devcon rescan
pause

怎样分成两部单独运行??

当我手动弹出后,
(或命令:  for /f %%i in ('devcon findall usb* ^|find /i "usb mass storage"') do  devcon remove "@%%i"   )
在需要时,只要"rescan"就可让原先弹出的移动驱动器再加载回来---能显示到盘符了
(不想还要拔USB线再插过)
该如何写??


[ Last edited by uouobb on 2008-1-13 at 08:22 PM ]

2008-1-13 20:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 2 楼』:  

引:

Quote:
Originally posted by ccwan at 2006-12-14 08:36:
是立即识别!!!  


昨晚我试了好几次,正确方法:
执行“for /f %%i in ('devcon findall usb* ^|find /i "usb mass storage"') do devcon remove "@%%i"”删除U盘后拔下U盘,再执行“devcon rescan”扫描新硬件,如果一起执行,U盘根本来不及拔下就扫描出来了;当然也可以不用执行“devcon rescan”


问题是弹出后再让它检测回来
不要"立即识别"的


2008-1-13 20:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 3 楼』:  


@echo off
color 0e&cls&echo.&echo 正在暂停你的 USB 磁盘设备...
for /f "tokens=1,2 delims=\" %%i in ('devcon find usb\*^|find /i "USB\VID"') do devcon.exe disable "%%i\%%j" >nul 2>nul
color 0a&cls&echo.&echo  任意键启用你的 USB 磁盘设备...&pause>nul
for /f "tokens=1,2 delims=\" %%i in ('devcon find usb\*^|find /i "USB\VID"') do devcon.exe enable "%%i\%%j" >nul 2>nul
pause




第一高手    第二高手

2008-1-13 20:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 4 楼』:  

这里其中用到了"devcon"
希望能有象在"设备管理"中手动"停用"USB,然后手动再"启用"的,做成批处理
也可以是通过注册表==之类的

我找过``没找著这样的文章..:lol:


2008-1-13 20:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 5 楼』:  3楼的--谢谢你解答

好象不行??
没反应??
也没弹出呀..

[ Last edited by uouobb on 2008-1-13 at 08:59 PM ]

2008-1-13 20:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 6 楼』:  

上面一部分是禁用
下面一部分是启用
如果你连续执行当然看不到效果
http://www.cn-dos.net/forum/viewthread.php?tid=34906&fpage=1
http://www.cn-dos.net/forum/viewthread.php?tid=35139&fpage=1



第一高手    第二高手

2008-1-13 21:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 7 楼』:  6楼...我没看那些"冗长"的处理哦!

你弄那段检测到已有"可移动驱动器"
只需运行就可以再显示的   贴上来好吗??


2008-1-13 21:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 8 楼』:  

for /f "tokens=1,2 delims=\" %%i in ('devcon find usb\*^|find /i "USB\VID"') do devcon.exe enable "%%i\%%j" >nul 2>nul

没能出来..
不用启用到哦

2008-1-13 21:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 9 楼』:  

我给代码当然能禁用能启用,你自己想怎么用就怎么改
如果运行前检测是否存在USB磁盘见代码
for /f "tokens=1,2 delims=\" %%i in ('devcon find usb\*^|find /i "USB\VID"') do set USB=%%i\%%j
if not defined USB echo USB 磁盘设备未发现



第一高手    第二高手

2008-1-13 21:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 10 楼』:  

噢,我的天哪
还是不会用你给的代码哦
不知道怎么的运行了没点动作...我的批处理不好@@

这个
@echo off
for /f %%i in ('devcon findall usb* ^|find /i "usb mass storage"') do  devcon remove "@%%i"
devcon rescan
pause
易懂

但不能"remove"后
在没拔出断开USB线时,过一段时间后再单独用"rescan"加载就显示回"可移动驱动器"来

看来还是找一些简单的类似"设备管理器"里手动"停用""启用"的,是是批处理的



2008-1-13 22:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 11 楼』:  fastslz~~

哦NO

fastslz

是不停用哪个"人体学输入设备"的
而是"磁盘驱动器" 里的

但我还是不会用decvon /?   的命令(用法)


2008-1-13 22:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 12 楼』:  

谢谢了``大概我能解决了

类似的停用方法..

只是find 不同

2008-1-13 22:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 13 楼』:  

devcon.exe disable 不就是"设备管理器"里手动"停用"
devcon.exe enable 不就是"设备管理器"里手动"启用"
不是所有是可移动磁盘都是这个名字usb mass storage所以我用find /i "USB\VID"
@echo off
for /f %%i in ('devcon findall usb* ^|find /i "usb mass storage"') do  devcon remove "@%%i"
这个是不完整的for语句 remove移除设备
如果代码不好用devcon find usb\*>id.txt再把id.txt内容贴上来



第一高手    第二高手

2008-1-13 22:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
uouobb
初级用户





积分 82
发帖 37
注册 2007-12-15
状态 离线
『第 14 楼』:  

最后是---
C:\Documents and Settings\Administrator>devcon enable "@USBSTOR\DISK&VEN_SUNPLUS
&PROD_MULTIMEDIA-DISK&REV_1.00\01.00.00&0:"
No devices enabled.

没有可用的devices

2008-1-13 23:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 15 楼』:  

devcon enable "@USBSTOR\DISK&VEN_SUNPLUS&PROD_MULTIMEDIA-DISK&REV_1.00\01.00.00&0:"
这个肯定不行的

你暂时用这个吧,只是部分mp3和数码相机的可移动磁盘不管用,设备的Hardware ID范围太大了找不出规律不好筛选
@echo off
devcon.exe>nul 2>nul
if %errorlevel%==9009 (CLS&&echo.&&COLOR 0E&&echo 本脚本需要微软 DevCon.exe 命令行实用工具支持&&ping/n 5 127.1>nul&&exit/b)

for /f "tokens=1,2 delims=\" %%i in ('devcon find usb\*^|find /i "Mass Storage"') do set "USBHDID=%%i\%%j"
if "%USBHDID%"=="" color 0b&cls&echo.&echo  USB 磁盘设备未发现!&ping/n 5 127.0.1>nul&exit
color 0e&cls&echo.&echo  正在禁用你的 USB 磁盘设备...
devcon.exe disable "%USBHDID%" >nul 2>nul
color 0b&cls&echo.&echo  USB 磁盘设备已禁用!&ping/n 3 127.0.1>nul
color 0a&cls&echo.&echo  任意键启用你的 USB 磁盘设备...&pause>nul
devcon.exe enable "%USBHDID%" >nul 2>nul
color 0e&cls&echo.&echo  全部OK!待退出...&ping/n 4 127.0.1>nul




第一高手    第二高手

2008-1-13 23:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: