| 
 
gmy 
版主
 
         操作系统爱好者
  
 
积分 1113 
发帖 392 
注册 2002-11-11 
状态 离线
 | 
『楼 主』:
 如何计算双硬盘每个硬盘的分区个数?
 
使用 LLM 解释/回答一下
  
如果,第一硬盘2个分区  第二硬盘为3个分区。那么就得到 2个 和 3个 
 
要求 CMD 和 纯DOS  双解! 
 
    
 
  
  |  
                  
  
                    DOS之家 http://doshome.com 站长 葛明阳 |   
 | 
  2006-6-8 18:06 | 
  
 | 
 | 
 
DOSforever 
金牌会员
 
      
 
  
  
积分 4639 
发帖 2239 
注册 2005-1-30 
状态 离线
 | 
 | 
  2006-6-8 18:26 | 
  
 | 
 | 
 
gmy 
版主
 
         操作系统爱好者
  
 
积分 1113 
发帖 392 
注册 2002-11-11 
状态 离线
 | 
『第 3 楼』:
 
 
使用 LLM 解释/回答一下
  
其实是这样的,在纯DOS批处理里: 
 
GDISK 1 >1.txt 
GDISK 2 >2.txt 
 
通过对1.txt和2.txt的提取,可以做到。 
但GDISK体积较大,我想用小程序(最好是DOS命令),不知能否做到? 
 
    
 
  
  |  
                  
  
                    DOS之家 http://doshome.com 站长 葛明阳 |   
 | 
  2006-6-9 00:39 | 
  
 | 
 | 
 
DOSforever 
金牌会员
 
      
 
  
  
积分 4639 
发帖 2239 
注册 2005-1-30 
状态 离线
 | 
 | 
  2006-6-9 13:14 | 
  
 | 
 | 
 
gmy 
版主
 
         操作系统爱好者
  
 
积分 1113 
发帖 392 
注册 2002-11-11 
状态 离线
 | 
『第 5 楼』:
 
 
使用 LLM 解释/回答一下
  
GDISK我知道的是8.3最高版本,最好要一个小工具,几KB的。GDISK太大 
 
    
 
  
  |  
                  
  
                    DOS之家 http://doshome.com 站长 葛明阳 |   
 | 
  2006-6-9 17:05 | 
  
 | 
 | 
 
DOSforever 
金牌会员
 
      
 
  
  
积分 4639 
发帖 2239 
注册 2005-1-30 
状态 离线
 | 
 | 
  2006-6-9 18:13 | 
  
 | 
 | 
 
fujianabc 
金牌会员
 
      
 
  
  
积分 3467 
发帖 1616 
注册 2004-6-21 
状态 离线
 | 
『第 7 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by DOSforever at 2006-6-9 06:13 PM: 
请给出具体的输出要求。就是说,你要怎样的输出,是不是只要一个数字就行了。 
 
另外,你的 GDISK 是哪里下载的?看来我找到的是很早以前的了: 
  
太强了,你找到了一个远古版的gdisk,居然还是属于Binary Research公司的版本。
 
gdisk是ghost软件的一个程序。ghost最早是Binary Research开发的,五个字母是该软件全名(忘了叫什么了)的英文首字母缩写。后来symantec收购了ghost,从此才有norton ghost和symantec ghost。  
 
    
 
  
 |   
 | 
  2006-6-9 20:37 | 
  
 | 
 | 
 
fastslz 
铂金会员
 
        DOS一根葱
  
 
积分 5493 
发帖 2315 
注册 2006-5-1 来自 上海 
状态 离线
 | 
『第 8 楼』:
 
 
使用 LLM 解释/回答一下
  
不用Gdisk,用ghost就行,dos之家葛站长不会嫌弃ghost的个头吧:P 
 
@echo off 
ghost -dd >NUL 
:1 
disk1= 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:1" >NUL 
if not errorlevel 1 set  disk1=1 goto 2 
:2 
disk1=1 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:2" >NUL 
if not errorlevel 1 set disk1=2 goto 3 
..............goto 1_1 
:2_1 
disk1= 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:1" >NUL 
if not errorlevel 1 set  disk2=1 goto 2 
:2_2 
disk1=1 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:2" >NUL 
if not errorlevel 1 set disk2=2 goto 3 
................goto end 
 
 Last edited by fastslz on 2006-6-9 at 21:00 ] 
 
    
 
  
 |   
 | 
  2006-6-9 20:58 | 
  
 | 
 | 
 
fastslz 
铂金会员
 
        DOS一根葱
  
 
积分 5493 
发帖 2315 
注册 2006-5-1 来自 上海 
状态 离线
 | 
『第 9 楼』:
 
 
使用 LLM 解释/回答一下
  
不过如果判断1个硬盘上有是否存在9分区的话,这样要find 9X2=18次可苦了赛扬Ⅲ以下机子了! 
 
    
 
  
 |   
 | 
  2006-6-9 21:08 | 
  
 | 
 | 
 
fastslz 
铂金会员
 
        DOS一根葱
  
 
积分 5493 
发帖 2315 
注册 2006-5-1 来自 上海 
状态 离线
 | 
『第 10 楼』:
 
 
使用 LLM 解释/回答一下
  
不好意思喝了酒有点迷惑 
 
@echo off 
ghost -dd >NUL 
:1 
disk1= 
TYPE GHSTSTAT.TXT|FIND /i "Key[1]   1:1" >NUL 
if not errorlevel 1 set  disk1=1 goto 2 
:2 
IF "%disk1%"=="1" goto end 
disk1= 
TYPE GHSTSTAT.TXT|FIND /i "Key[1]   1:2" >NUL 
if not errorlevel 1 set disk1=2 goto 3 
:3 
IF "%disk1%"=="2" goto end 
..............goto 2_1 
:2_1 
disk2= 
TYPE GHSTSTAT.TXT|FIND /i "Key[1]   2:1" >NUL 
if not errorlevel 1 set  disk2=1 goto 2 
:2_2 
IF "%disk2%"=="1" goto end 
disk2= 
TYPE GHSTSTAT.TXT|FIND /i "Key[1]   2:2" >NUL 
if not errorlevel 1 set disk2=2 goto 2_3 
:2_3 
IF "%disk2%"=="2" goto end 
................goto end 
 
    
 
  
 |   
 | 
  2006-6-9 21:24 | 
  
 | 
 | 
 
willsort 
元老会员
 
          Batchinger
  
 
积分 4432 
发帖 1512 
注册 2002-10-18 
状态 离线
 | 
『第 11 楼』:
 
 
使用 LLM 解释/回答一下
  
Re fastslz: 
 
      你的代码还是存在问题,"if not errorlevel 1 set  disk1=1 goto 2",将导致disk1产生错误的值,而且CMD下应该使用 ghostpe 或ghost32的。 
 
      另外,这个脚本可以使用for来简化,如果楼主有相关要求,我会抽时间编写一个,或者也可以参考一下论坛的旧主题,其中有不少是 讨论纯DOS下循环的实现的,可以选择按内容搜索关键字“:loop”。 
 
    
 
  
  |  
                  
  
                    ※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得! |   
 | 
  2006-6-10 21:39 | 
  
 | 
 | 
 
ITU 
中级用户
 
   
 
  
  
积分 209 
发帖 82 
注册 2006-3-22 
状态 离线
 | 
『第 12 楼』:
 
 
使用 LLM 解释/回答一下
  
Originally posted by gmy at 2006-6-9 17:05: 
GDISK我知道的是8.3最高版本,最好要一个小工具,几KB的。GDISK太大  
有同感!  
 
    
 
  
 |   
 | 
  2006-6-10 21:49 | 
  
 | 
 | 
 
fastslz 
铂金会员
 
        DOS一根葱
  
 
积分 5493 
发帖 2315 
注册 2006-5-1 来自 上海 
状态 离线
 | 
『第 13 楼』:
 
 
使用 LLM 解释/回答一下
  
多谢willsort指导 
      本人6年前开始接触DOS一直在黑屏幕上摸索所以对cmd命令太生疏,甚至忽略了cmd命令存在,干脆批处理dos、cmd通用,来这以前也没泡论坛的习惯,现在有机会该多学习学习cmd了。不过32位和16位程序还是区分开的 
 
用for简化在这之前想到过,假设某disk1可能有9个盘,那用find判断9次处理时间过长,而上面的方法如果disk1=2即goto end了,不知道我的思路是否正确。 
至于用disk1=1、goto 2 方便标记,实际应用会注意的谢谢提醒 
 
 
现在还发现上面有错误disk1=2时应该继续判断disk2=?而不是goto end 
 
@echo off 
ghost -dd >NUL 
:1 
disk1= 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:1" >NUL 
if not errorlevel 1 set  disk1=1 goto 2 
:2 
IF "%disk1%"=="1" goto FIND2 
disk1= 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:2" >NUL 
if not errorlevel 1 set disk1=2 goto 3 
:3 
IF "%disk1%"=="2" goto FIND2 
..............goto FIND2 
 
:2_1 
disk2= 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:1" >NUL 
if not errorlevel 1 set  disk2=1 goto 2 
:2_2 
IF "%disk2%"=="1" goto end 
disk2= 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:2" >NUL 
if not errorlevel 1 set disk2=2 goto 2_3 
:2_3 
IF "%disk2%"=="2" goto end 
................goto end 
 
:FIND2 
rem 判断是否存在硬盘2 
TYPE GHSTSTAT.TXT|FIND /i "Key   2" >NUL 
if not errorlevel 1 goto 2_1 
 
:end 
 
 Last edited by fastslz on 2006-6-11 at 00:22 ] 
 
    
 
  
 |   
 | 
  2006-6-11 00:18 | 
  
 | 
 | 
 
无奈何 
荣誉版主
 
       
 
  
  
积分 1338 
发帖 356 
注册 2005-7-15 
状态 离线
 | 
『第 14 楼』:
 
 
使用 LLM 解释/回答一下
  
写了个 CMD 下的方案,没有使用第三方工具。脚本不限制磁盘的个数,可惜我只有两个磁盘,没法作更多磁盘的测试。已知的问题:如果像我的硬盘一样状况不好的话可能执行较慢,但不能完全归结于脚本的效率问题。 
 
 
- :: 显示磁盘分区数
 
 - :: 无奈何@cn-dos.net - 2006-06-11 - CMDWinXP
 
 - @echo off
 
 - setlocal ENABLEDELAYEDEXPANSION
 
 - rem 获取磁盘信息
 
 - for /f "tokens=1,2 delims= " %%a in ('echo list disk ^|diskpart ^|findstr /r /c:"磁盘  "') do (
 
 - 	@echo select disk=%%b>%%b.script
 
 - 	@echo list partition>>%%b.script
 
 - 	@echo exit>>%%b.script
 
 - 	rem 执行脚本,获取磁盘分区信息
 
 - 	for /f "tokens=1,2 delims= " %%m in ('diskpart /s %%b.script ^|findstr /r /c:"分区  "') do (
 
 - 		rem 减去扩展的分区数
 
 - 		set /a num=%%n-1
 
 - 	)
 
 - 	del %%b.script
 
 - 	echo 磁盘 %%b	含有 !num! 个分区
 
 - )
 
  	-=代码着色  BY:无奈何=- 
 
 Last edited by 无奈何 on 2006-6-11 at 02:42 ]  
 
    
 
  
  |  
                  
  
                      ☆开始\运行 (WIN+R)☆ 
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul 
 
 |   
 | 
  2006-6-11 02:32 | 
  
 | 
 | 
 
不得不爱 
超级版主
 
          我爱DOS
  
 
积分 5310 
发帖 2044 
注册 2005-9-26 来自 四川南充 
状态 离线
 | 
『第 15 楼』:
 
 
使用 LLM 解释/回答一下
  
fastslz的程序有点问题,会出错!下面是我的程序! 
@echo off 
ghost -dd >NUL 
set disk1= 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:1" >NUL 
if not errorlevel 1 set disk1=1 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:2" >NUL 
if not errorlevel 1 set disk1=2 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:3" >NUL 
if not errorlevel 1 set disk1=3 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:4" >NUL 
if not errorlevel 1 set disk1=4 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:5" >NUL 
if not errorlevel 1 set disk1=5 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:6" >NUL 
if not errorlevel 1 set disk1=6 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:7" >NUL 
if not errorlevel 1 set disk1=7 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:8" >NUL 
if not errorlevel 1 set disk1=8 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:9" >NUL 
if not errorlevel 1 set disk1=9 
TYPE GHSTSTAT.TXT|FIND /i "Key   1:10" >NUL 
if not errorlevel 1 set disk1=10 
if not %disk1%#==# goto 1 
goto 2 
:1 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:1" >NUL 
if not errorlevel 1 set disk2=1 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:2" >NUL 
if not errorlevel 1 set disk2=2 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:3" >NUL 
if not errorlevel 1 set disk2=3 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:4" >NUL 
if not errorlevel 1 set disk2=4 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:5" >NUL 
if not errorlevel 1 set disk2=5 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:6" >NUL 
if not errorlevel 1 set disk2=6 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:7" >NUL 
if not errorlevel 1 set disk2=7 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:8" >NUL 
if not errorlevel 1 set disk2=8 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:9" >NUL 
if not errorlevel 1 set disk2=9 
TYPE GHSTSTAT.TXT|FIND /i "Key   2:10" >NUL 
:2 
set disk 
 
 Last edited by qwe1234567 on 2006-6-11 at 09:46 ] 
 
    
 
  
  |  
                  
  
                    我的网络U盘 我的网络第2个U盘 
论坛软件下载链接 
灵雨飘零论坛   
论坛新手必读,所有人的基本行为准则 
刷QQ空间人气、留言的小软件 |   
 | 
  2006-6-11 09:44 | 
  
 |