中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-07-07 13:33
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理怎样检测U盘? 查看 3,553 回复 23
16 发表于 2006-09-27 10:35 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
不好意思, 一个变量出错了, 已经修正, 请重新测试11楼的代码!

[ Last edited by pengfei on 2006-9-27 at 10:40 ]
17 发表于 2006-09-27 22:13 ·  中国 重庆 合川区 电信
初级用户
积分 126
发帖 38
注册 2006-09-26 20:39
19年会员
UID 63726
状态 离线
老大,我加了format %%a后,却把E盘格式化了!我是这样加的


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
format %%a /q /x /y
)
)
18 发表于 2006-09-27 22:54 ·  中国 北京 联通
银牌会员
★★★
努力做坏人
积分 1,185
发帖 438
注册 2006-08-28 12:00
19年会员
UID 61449
来自 北京
状态 离线
问题好像没有这么复杂吧???
@echo off
for /f "delims=" %%a in ('fsutil fsinfo drives^|find /v ""') do set a=%%a
fsutil fsinfo drivetype %a%|find "移动" >nul&&goto :format||echo 对不起,没有找到移动驱动器!&&goto:eof
:format
format %a% /fs:fat32 /q
echo 格式化完毕!!!
我今后在论坛的目标就是做个超级坏人!!!
19 发表于 2006-09-28 00:10 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
实在对不起! 都怪我, 没有说清楚, 格式化E盘已经是不幸中的万幸了, 楼主的格式化代码加错地方了, 没有来个全盘格式化已经是幸运了.

你的格式化是加在内循环中, %%a这个循环变量会把硬盘上所有的盘符都列出. 所以你在用的时候一定要谨慎!!!

代码修改如下:
@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:" (
set drive=%%a
echo 找到可移动存储设备, 盘符为%%a
call :go
)
)
)
cls
echo 所有盘符已检测完毕!
pause
exit

:go
echo.
set /p choice=请选择(y=格式化该盘 n=跳过):
if /i "%choice%"=="y" goto begin
if /i "%choice%"=="n" goto :eof
goto go
:begin
echo format !drive! /q /x /y
echo 格式化完成!
pause
:eof

格式化代码为了安全起见改成了回显示, 测试过后如没有问题请把前面的确echo去掉
echo format !drive! /q /x /y

[ Last edited by pengfei on 2006-9-28 at 00:30 ]
20 发表于 2006-09-28 00:12 ·  中国 湖南 娄底 新化县 电信
银牌会员
★★★
积分 1,218
发帖 485
注册 2006-07-21 21:24
19年会员
UID 58987
来自 湖南.娄底
状态 离线
请大家千万小心, 在测试这段代码前先把format换成echo.

对楼主格式化E盘造成的损失深表愧疚, 如果E盘有重要数据, 请给我留言, 我这有个数据恢复的软件, 或许能挽回点损失.

[ Last edited by pengfei on 2006-9-28 at 00:48 ]
21 发表于 2006-09-28 10:58 ·  中国 重庆 合川区 电信
初级用户
积分 126
发帖 38
注册 2006-09-26 20:39
19年会员
UID 63726
状态 离线
没有什么重要东西了,感谢大哥的帮助啊!
22 发表于 2006-09-29 02:10 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
20年会员
UID 50550
状态 离线
23 发表于 2007-12-04 12:40 ·  中国 上海 联通
初级用户
★★
积分 153
发帖 68
注册 2006-10-12 22:25
19年会员
UID 65507
来自 上海
状态 离线
Originally posted by namejm at 2006-9-27 01:13:
  『第 3 楼』的代码有条件限制的:要在XP及其之后的系统下,以管理员权限运行。
  不过在我的机子上测试的时候,移动硬盘和U盘的类型显示的依然是固定驱动器字样,有点奇怪。



碰到同样的问题,移动硬盘不知道该怎么判断:显示的都是固定驱动器
个人主页-找餐厅:http://www.canting.cc
24 发表于 2007-12-04 14:19 ·  中国 江苏 苏州 移动
银牌会员
★★★
积分 1,608
发帖 780
注册 2007-10-07 10:19
18年会员
UID 99089
性别 男
状态 离线
Originally posted by nvflash at 2006-9-27 09:58 AM:

对于仁兄的帮助表示无比崇高的敬意!

为什么是 tokens=1,2 ---- tokens=1
为什么要!genre:~2! ---- 直接舍去
感觉有些多余
论坛跳转: