![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 15:17 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教:如何用批处理判断某一扇区为空闲扇区? |
| 可打印版本 2,567 / 15 |
| 第1楼 lianjiang2004 | 发表于 2007-06-04 16:58 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
请教:如何用批处理判断某一扇区为空闲扇区? 请教:如何用批处理判断某一扇区为空闲扇区?
比如我用软件读取39扇区后,得到的文件为039.txt,格式如下: -------------- Disk 0 Absolute Sector 39 00000004E00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000004E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 。。。。。 略去 ------------------ 我用的批处理如下,麻烦各位给看看,哪里除了问题。 ---------- rem @echo off if exist %temp%\039.txt del %temp%\039.txt >nul diskrw 0 39 1 /l >%temp%\039.txt For /f "tokens=1-2 delims=:" %%i In ('type %temp%\039.txt ^| find ":"') do ( set sector=%%j echo sector is "%sector%" pause if not "%sector%"==" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " goto sector_2c ) :sector_2d echo 39扇区为空闲扇区。 echo. pause goto sector_2b :sector_2c echo 39扇区不是空闲扇区。 echo. pause :sector_2b [ Last edited by lianjiang2004 on 2007-6-4 at 05:00 PM ] |
|
| 第2楼 lianjiang2004 | 发表于 2007-06-04 17:01 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
读出的“"%sector%”无值,不知何故。
|
|
| 第3楼 lxmxn | 发表于 2007-06-04 17:16 |
| 版主 发帖 4,938 积分 11,386 | |
|
没有启用变量延迟。
在批处理的开始加上“SetLocal EnableDelayedExpansion”,再把%sector%改成!sector!试试,不行再跟帖讨论。 |
|
| 第4楼 lianjiang2004 | 发表于 2007-06-04 17:20 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
还是无值。只是显示成 sector is "!sector!"。
|
|
| 第5楼 qzwqzw | 发表于 2007-06-04 18:16 |
| 银牌会员 发帖 636 积分 2,343 | |
|
即使所有数据为0
也不保证这个扇区未被使用 更不保证这个扇区将不会使用 所以这只能是辅助的判定办法 还需要依靠其他的办法来做主判定 |
|
| 第6楼 lianjiang2004 | 发表于 2007-06-04 18:23 |
| 金牌会员 发帖 1,884 积分 3,946 | |
Originally posted by qzwqzw at 2007-6-4 18:16: 请教有何主判定法? 我想用的是一个保留扇区里的一个空闲扇区。 一般软件是不会用的,我想也无需保证将不会被用。呵呵,就像别人能用,我也能用,我想只要是还没用的就行吧。 |
|
| 第7楼 terse | 发表于 2007-06-04 18:38 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by lianjiang2004 at 2007-6-4 17:20: 帮你试过 可以的啊! sector is " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" 请按任意键继续. . . 39扇区不是空闲扇区。 请按任意键继续. . . |
|
| 第8楼 lxmxn | 发表于 2007-06-04 18:41 |
| 版主 发帖 4,938 积分 11,386 | |
|
怎么会没有呢?
我这里测试正常。 |
|
| 第9楼 lianjiang2004 | 发表于 2007-06-04 18:52 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
怪事,把8楼的拷贝进去,有值了。
|
|
| 第10楼 lianjiang2004 | 发表于 2007-06-04 18:55 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
我想要的是有不为“ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 “的行才显示不是空闲扇区,怎么全是0,也显示不是空闲扇区了?我的批处理中哪里还有问题?
|
|
| 第11楼 lianjiang2004 | 发表于 2007-06-04 18:58 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
知道了,要改成 if not "!sector!"==" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " goto sector_2c
|
|
| 第12楼 lianjiang2004 | 发表于 2007-06-04 19:01 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
请教,为何开头部分一定要加上“SetLocal EnableDelayedExpansion”
以前用的类似批处理,没有也行的。就像1楼的批处理那样。 |
|
| 第13楼 lxmxn | 发表于 2007-06-04 19:05 |
| 版主 发帖 4,938 积分 11,386 | |
|
以“变量延迟”为关键字搜索一下。
|
|
| 第14楼 terse | 发表于 2007-06-04 19:15 |
| 银牌会员 发帖 946 积分 2,404 | |
|
拿掉第一个pause 更方便一点嘛
|
|
| 第15楼 lianjiang2004 | 发表于 2007-06-04 19:20 |
| 金牌会员 发帖 1,884 积分 3,946 | |
|
因为批处理没通过,所以在差错,也就多了一些显示的地方。
发现那里变量无值,所以才来请求帮助的。解决了,当然要去掉无用信息,要结果即可。多谢。 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |