|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 | 
| 『楼 主』:
 请教:如何用批处理判断某一扇区为空闲扇区?
 
使用 LLM 解释/回答一下 
 
 
请教:如何用批处理判断某一扇区为空闲扇区?
 比如我用软件读取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 ]
 
Ask: How to use batch processing to determine whether a certain sector is an idle sector?
 For example, after I use software to read sector 39, the obtained file is 039.txt, and the format is as follows:
 --------------
 
 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
 。。。。。
 Omitted
 
 ------------------
 
 The batch processing I used is as follows, please help everyone to see, where is the problem.
 ----------
 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      Sector 39 is an idle sector.
 echo.
 pause
 goto sector_2b
 
 :sector_2c
 
 
 echo      Sector 39 is not an idle sector.
 echo.
 pause
 :sector_2b
 
 Last edited by lianjiang2004 on 2007-6-4 at 05:00 PM ]
 
 
 
 
 |  
                  |  Windows 一键还原
 http://www.yjhy.com
 |  | 
|  2007-6-4 16:58 |  | 
|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 |  | 
|  2007-6-4 17:01 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
没有启用变量延迟。
 在批处理的开始加上“SetLocal EnableDelayedExpansion”,再把%sector%改成!sector!试试,不行再跟帖讨论。
 
Variable delay is not enabled. Add "SetLocal EnableDelayedExpansion" at the beginning of the batch, then try changing %sector% to !sector!. If it doesn't work, post a follow-up to discuss. 
 
 
 |  | 
|  2007-6-4 17:16 |  | 
|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 |  | 
|  2007-6-4 17:20 |  | 
|  | 
 
| qzwqzw 银牌会员
 
      天的白色影子
 
 
 积分 2343
 发帖 636
 注册 2004-3-6
 状态 离线
 | 
| 『第 5 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
即使所有数据为0
 也不保证这个扇区未被使用
 
 更不保证这个扇区将不会使用
 
 所以这只能是辅助的判定办法
 
 还需要依靠其他的办法来做主判定
 
Even if all data is 0 it does not guarantee that this sector is unused nor does it guarantee that this sector will not be used so this can only be an auxiliary judgment method and other methods are still needed for the main judgment 
 
 
 |  | 
|  2007-6-4 18:16 |  | 
|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 | 
| 『第 6 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by qzwqzw at 2007-6-4 18:16:即使所有数据为0
 
 也不保证这个扇区未被使用
 
 更不保证这个扇区将不会使用
 
 所以这只能是辅助的判定办法
 
 还需要依靠其他的办法来做主判定
 
请教有何主判定法? 
我想用的是一个保留扇区里的一个空闲扇区。 
一般软件是不会用的,我想也无需保证将不会被用。呵呵,就像别人能用,我也能用,我想只要是还没用的就行吧。 
Originally posted by qzwqzw at 2007-6-4 18:16:Even if all data is 0
 
 It does not guarantee that this sector is unused
 
 Nor does it guarantee that this sector will not be used
 
 So this can only be an auxiliary judgment method
 
 Other methods are still needed for the main judgment
 
Please teach me what the main judgment method is? 
I want to use an idle sector in a reserved sector. 
General software will not use it, and I think there is no need to guarantee that it will not be used. Hehe, just like others can use it, I can also use it. I think as long as it is not used yet. 
 
 
 
 |  
                  |  Windows 一键还原
 http://www.yjhy.com
 |  | 
|  2007-6-4 18:23 |  | 
|  | 
 
| terse 银牌会员
 
      
 
 
 
 积分 2404
 发帖 946
 注册 2005-9-8
 状态 离线
 | 
| 『第 7 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
Originally posted by lianjiang2004 at 2007-6-4 17:20:还是无值。只是显示成 sector is "!sector!"。
 
帮你试过  可以的啊! 
sector is " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" 
请按任意键继续. . . 
     39扇区不是空闲扇区。
 
请按任意键继续. . . 
Originally posted by lianjiang2004 at 2007-6-4 17:20:Still no value. Just displayed as sector is "!sector!".
 
Helped you test it, it's okay! 
sector is " 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" 
Press any key to continue... 
Sector 39 is not an idle sector. 
Press any key to continue... 
 
 
 |  | 
|  2007-6-4 18:38 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
| 『第 8 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
怎么会没有呢? 
我这里测试正常。
 @echo off
 SetLocal EnableDelayedExpansion
 For /f "tokens=1-2 delims=:" %%i In ('type 009.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
 )
 pause
 
How could there be none? 
It tests normally here.
 @echo off
 SetLocal EnableDelayedExpansion
 For /f "tokens=1-2 delims=:" %%i In ('type 009.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
 )
 pause
 
 
 
 |  | 
|  2007-6-4 18:41 |  | 
|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 |  | 
|  2007-6-4 18:52 |  | 
|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 | 
| 『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
我想要的是有不为“ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 “的行才显示不是空闲扇区,怎么全是0,也显示不是空闲扇区了?我的批处理中哪里还有问题? 
What I want is to display only the lines that are not "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" as non-free sectors. Why are all 0s also displayed as non-free sectors? What's wrong in my batch script? 
 
 
 
 |  
                  |  Windows 一键还原
 http://www.yjhy.com
 |  | 
|  2007-6-4 18:55 |  | 
|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 | 
| 『第 11 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
知道了,要改成 if not "!sector!"==" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " goto sector_2c 
Got it, it should be changed to if not "!sector!" == "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00" goto sector_2c 
 
 
 
 |  
                  |  Windows 一键还原
 http://www.yjhy.com
 |  | 
|  2007-6-4 18:58 |  | 
|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 | 
| 『第 12 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
请教,为何开头部分一定要加上“SetLocal EnableDelayedExpansion”以前用的类似批处理,没有也行的。就像1楼的批处理那样。
 
Ask, why must the beginning part add "SetLocal EnableDelayedExpansion"? The similar batch processing I used before didn't need it. Just like the batch processing in building 1. 
 
 
 
 |  
                  |  Windows 一键还原
 http://www.yjhy.com
 |  | 
|  2007-6-4 19:01 |  | 
|  | 
 
| lxmxn 版主
 
         
 
 
 积分 11386
 发帖 4938
 注册 2006-7-23
 状态 离线
 | 
| 『第 13 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
以“变量延迟”为关键字搜索一下。 
Search for the keyword "variable delay". 
 
 
 |  | 
|  2007-6-4 19:05 |  | 
|  | 
 
| terse 银牌会员
 
      
 
 
 
 积分 2404
 发帖 946
 注册 2005-9-8
 状态 离线
 | 
| 『第 14 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
拿掉第一个pause  更方便一点嘛 
It's more convenient to remove the first pause. 
 
 
 |  | 
|  2007-6-4 19:15 |  | 
|  | 
 
| lianjiang2004 金牌会员
 
       
 
 
 
 积分 3946
 发帖 1884
 注册 2006-1-20
 状态 离线
 | 
| 『第 15 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
因为批处理没通过,所以在差错,也就多了一些显示的地方。发现那里变量无值,所以才来请求帮助的。解决了,当然要去掉无用信息,要结果即可。多谢。
 
Because the batch processing didn't pass, so I'm checking for errors, which has resulted in more display areas. I found that the variable there has no value, so I came to ask for help. Once solved, of course, I need to remove the useless information and just get the result. Thanks a lot. 
 
 
 
 |  
                  |  Windows 一键还原
 http://www.yjhy.com
 |  | 
|  2007-6-4 19:20 |  |