无忧启动论坛

标题: nt下如何获得第一硬盘最后一个逻辑磁盘的盘符(lianjiang请进) [打印本页]

作者: winlong102    时间: 2010-5-16 13:59
标题: nt下如何获得第一硬盘最后一个逻辑磁盘的盘符(lianjiang请进)
如题   尽量也让他支持2003  和vista。
可以使用第三方工具
还需要尽量能应付win下盘符错乱的情况。
有人给的第一种方法
@echo off
(echo select disk=0
echo list partition)>script.txt
for /f "tokens=2" %%a in ('diskpart /s script.txt') do set n=%%a

(echo select disk=0
echo select partition %n%
echo detail partition
echo exit)>script.txt
for /f "tokens=4" %%a in ('diskpart /s script.txt') do set last=%%a

echo %last%
pause
但在我电脑上结果是只显示一个 Microsoft。

第二种:
@echo off
for /f %%i in ('"wmic logicaldisk where Description="本地固定磁盘" get DeviceID |find /v "DeviceID""') do set mydrv=%%i
echo %mydrv%
pause
这个在2000下无法运行。

请大侠们帮帮忙    谢谢

[ 本帖最后由 winlong102 于 2010-5-17 13:00 编辑 ]
作者: pz    时间: 2010-5-16 14:27
标题: Win下找出最后分区的盘符(包括移动硬盘)
@ECHO OFF
For %%i In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do FOR /f %%j in ('FSUTIL FSINFO DRIVETYPE %%i:^|FIND /I "固定驱动器"') DO SET LastP=%%j
ECHO 最后一个分区是 %LastP%&&ECHO.
PAUSE
作者: winlong102    时间: 2010-5-16 14:57
多谢楼上   但好像无法应付 盘符错乱  和判断 是否为第一块硬盘
作者: 77730191    时间: 2010-5-16 15:48
原帖由 winlong102 于 2010-5-16 13:59 发表
如题   尽量也让他支持2003  和vista。
可以使用第三方工具
还需要尽量能应付win下盘符错乱的情况。
有人给的第一种方法
@echo off
(echo select disk=0
echo list partition)>script.txt
for /f "token ...

你第一个显示Microsoft肯定有隐藏分区。
作者: lianjiang    时间: 2010-5-16 15:54
原帖由 winlong102 于 2010-5-16 14:57 发表
但好像无法应付 盘符错乱  和判断 是否为第一块硬盘


借助磁盘工具,比如gdisk32,dsptw等处理就可以了。




作者: lianjiang    时间: 2010-5-16 16:41
借助磁盘工具dsptw的参考方案:


作者: winlong102    时间: 2010-5-16 20:39
多谢 各位  我试下  呵呵
作者: winlong102    时间: 2010-5-17 12:57
@echo off
for /f "tokens=2 delims= ",%%i,In ('gdisk32 1 /status ^|find /i " LOGICAL"') do set DRV=%%i
echo %DRV%
PAUSE

运行得到的是数值   而不是盘符。。
应该如何修改。。。
麻烦您看下

[ 本帖最后由 winlong102 于 2010-5-17 13:14 编辑 ]
作者: lianjiang    时间: 2010-5-17 14:01
原帖由 winlong102 于 2010-5-17 12:57 发表
@echo off
for /f "tokens=2 delims= ",%%i,In ('gdisk32 1 /status ^|find /i " LOGICAL"') do set DRV=%%i
echo %DRV%
PAUSE

运行得到的是数值   而不是盘符。。
应该如何修改。。。
麻烦您看下

取得分区信息的工具不同,其格式是不一样的。
关键的是你要根据信息找出你所需信息的特征来。
写法肯定有多种,下面的仅供参考。


作者: winlong102    时间: 2010-5-17 14:43
多谢了  嘿嘿    字数补丁
作者: chen463    时间: 2010-5-19 23:58
原帖由 lianjiang 于 2010-5-17 14:01 发表

取得分区信息的工具不同,其格式是不一样的。
关键的是你要根据信息找出你所需信息的特征来。
写法肯定有多种,下面的仅供参考。

89706

奇怪!为什么出现错误信息

来学习一下

520.JPG (9 KB, 下载次数: 111)

520.JPG

作者: lianjiang    时间: 2010-5-20 06:49
原帖由 chen463 于 2010-5-19 23:58 发表

奇怪!为什么出现错误信息

来学习一下


1,贴出完整脚本
2,贴出分区信息截图
作者: lianjiang    时间: 2010-5-20 06:54
上面的脚本是按楼主要求写的。
但没有是否满足条件的检测。
假如试图作为通用工具,像一键恢复之类的来使用的话,必须加入必要的判断。
作者: chen463    时间: 2010-5-20 09:35
原帖由 lianjiang 于 2010-5-20 06:49 发表


1,贴出完整脚本
2,贴出分区信息截图

@echo off
for,/f,"tokens=1-3",%%i,In ('gdisk32 1 /status ^|find /i ": "') do (if "%%k"==" LOGICAL" set DRV_last_log_1hd=%%i)
echo.
echo 盘符:
echo %DRV_last_log_1hd%
echo.
PAUSE

另外请教lianjiang大:

图里面的6,也是1JF9第二主分区隐藏,有没有方式,可以在虚拟盘执行COPY或REN更名的功能,还是ghost有此类似指令完成它。

520.JPG (28.83 KB, 下载次数: 94)

520.JPG

作者: lianjiang    时间: 2010-5-20 09:57
(if "%%k"==" LOGICAL" set DRV_last_log_1hd=%%i)
--------------------------------------------------------
是"LOGICAL",不是" LOGICAL"
作者: lianjiang    时间: 2010-5-20 10:01
ghost无此功能,可借助一些显示隐藏分区的工具。
作者: chen463    时间: 2010-5-20 19:20
原帖由 lianjiang 于 2010-5-20 09:57 发表
(if "%%k"==" LOGICAL" set DRV_last_log_1hd=%%i)
--------------------------------------------------------
是"LOGICAL",不是" LOGICAL"

哦!空一格差那么多,谢谢!已经ok,两种方式刚好相反操作。
作者: zch11230    时间: 2010-5-20 23:28
不知道为什么 看到这些代码我很兴奋




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3