中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-26 12:17
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,275 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理怎样检测U盘?
可打印版本  3,855 / 23
第1楼 nvflash 发表于 2006-09-26 22:46
初级用户 发帖 38 积分 126
批处理怎样检测U盘?
寻求N久,未果,在此抱最后希望,望大家帮助小弟一把,不甚感谢!

这个程序我的思路大概是这样的:
如果 有USB移动设备 (将其格式化,并返回“格式化成功”
) 否则 (
返回重新执行
)
第2楼 redtek 发表于 2006-09-26 22:59
金牌会员 发帖 1,147 积分 2,902
太危险了吧?
第3楼 pengfei 发表于 2006-09-26 23:55
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
请慎用!!!

@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
set genre=%%i
set genre=!genre:~-2!
for %%1 in (!genre!) do (
fsutil fsinfo drivetype %%1 | findstr "移动" >nul 2>nul && if /i not "%%1"=="A:" echo 找到可移动存储设备, 可能为U盘=%%1
)
)
pause
第4楼 namejm 发表于 2006-09-27 01:13
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  『第 3 楼』的代码有条件限制的:要在XP及其之后的系统下,以管理员权限运行。
  不过在我的机子上测试的时候,移动硬盘和U盘的类型显示的依然是固定驱动器字样,有点奇怪。
第5楼 nvflash 发表于 2006-09-27 02:07
初级用户 发帖 38 积分 126
Originally posted by pengfei at 2006-9-26 23:55:
请慎用!!!

@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
set genre=%%i
set genr ...



麻烦解释一下此段代码的意思好吗?

另外,关于判断是否格式化成功这段代码,为什么没用呢?

format "USBHDD" /q /s /y
if errorlevel==0 (echo 格式化成功
) else (
echo 格式化失败
)

按预计是没有正常格式化就显示“格式化失败”,但每次却都是显示的"格式化成功"。

[ Last edited by nvflash on 2006-9-27 at 02:14 ]
第6楼 vkill 发表于 2006-09-27 08:18
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
Originally posted by namejm at 2006-9-27 01:13:
  『第 3 楼』的代码有条件限制的:要在XP及其之后的系统下,以管理员权限运行。
  不过在我的机子上测试的时候,移动硬盘和U盘的类型显示 ...

我的也是这样
第7楼 pengfei 发表于 2006-09-27 09:14
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
真郁闷...

在我电脑上测试行啊!

附件
1.jpg (37.51 KiB)
第8楼 namejm 发表于 2006-09-27 09:30
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  可能是什么地方设置改动了之后就出现找不到 "移动" 这个关键词了,请各位查找一下原因吧。
第9楼 vkill 发表于 2006-09-27 09:32
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
Originally posted by pengfei at 2006-9-27 09:14:
真郁闷...

在我电脑上测试行啊!

你的排列图标是怎么样的?
第10楼 nvflash 发表于 2006-09-27 09:37
初级用户 发帖 38 积分 126
Originally posted by pengfei at 2006-9-27 09:14:
真郁闷...

在我电脑上测试行啊!


那么,如果我现在要格式化这个U盘,应该用什么变量来代表盘符呢?
第11楼 pengfei 发表于 2006-09-27 09:42
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
不知道是不是变量用的不妥, 改了一下:

@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""') do (
set genre=%%i
set genre=!genre:~-2!
for %%a in (!genre!) do (
fsutil fsinfo drivetype %%a | findstr "移动" >nul 2>nul && if /i not "%%a"=="A:" echo 找到可移动存储设备, 可能为U盘=%%a
)
)
pause


格式化U盘的盘符变量为 %%a

[ Last edited by pengfei on 2006-9-27 at 10:39 ]
第12楼 vkill 发表于 2006-09-27 09:45
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
全是显示 驱动器

附件
aa.BMP (52.87 KiB)
第13楼 pengfei 发表于 2006-09-27 09:48
银牌会员 发帖 485 积分 1,218 来自 湖南.娄底
楼上兄弟运行 fsutil fsinfo drives 命令显示没错, 难道'fsutil fsinfo drives^|find /v 后面这个管道命令没有成功执行.
第14楼 nvflash 发表于 2006-09-27 09:58
初级用户 发帖 38 积分 126
Originally posted by pengfei at 2006-9-27 09:42:
不知道是不是变量用的不妥, 改了一下:

@echo off
setlocal enabledelayedexpansion
for /f "skip=1 tokens=1,2 delims=\" %%i in ('fsutil fsinfo drives^|find /v ""' ...

对于仁兄的帮助表示无比崇高的敬意!
第15楼 nvflash 发表于 2006-09-27 10:33
初级用户 发帖 38 积分 126
但是,在我的电脑上还是检测不到,什么也不显示,就暂停了
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023