无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5155|回复: 17
打印 上一主题 下一主题

nt下如何获得第一硬盘最后一个逻辑磁盘的盘符(lianjiang请进)

[复制链接]
跳转到指定楼层
1#
发表于 2010-5-16 13:59:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题   尽量也让他支持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 编辑 ]
2#
发表于 2010-5-16 14:27:37 | 只看该作者

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
回复

使用道具 举报

3#
 楼主| 发表于 2010-5-16 14:57:16 | 只看该作者
多谢楼上   但好像无法应付 盘符错乱  和判断 是否为第一块硬盘
回复

使用道具 举报

4#
发表于 2010-5-16 15:48:02 | 只看该作者
原帖由 winlong102 于 2010-5-16 13:59 发表
如题   尽量也让他支持2003  和vista。
可以使用第三方工具
还需要尽量能应付win下盘符错乱的情况。
有人给的第一种方法
@echo off
(echo select disk=0
echo list partition)>script.txt
for /f "token ...

你第一个显示Microsoft肯定有隐藏分区。
回复

使用道具 举报

5#
发表于 2010-5-16 15:54:40 | 只看该作者
原帖由 winlong102 于 2010-5-16 14:57 发表
但好像无法应付 盘符错乱  和判断 是否为第一块硬盘


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



回复

使用道具 举报

6#
发表于 2010-5-16 16:41:49 | 只看该作者
借助磁盘工具dsptw的参考方案:

回复

使用道具 举报

7#
 楼主| 发表于 2010-5-16 20:39:58 | 只看该作者
多谢 各位  我试下  呵呵
回复

使用道具 举报

8#
 楼主| 发表于 2010-5-17 12:57:46 | 只看该作者
@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 编辑 ]
回复

使用道具 举报

9#
发表于 2010-5-17 14:01:07 | 只看该作者
原帖由 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

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

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

回复

使用道具 举报

10#
 楼主| 发表于 2010-5-17 14:43:26 | 只看该作者
多谢了  嘿嘿    字数补丁
回复

使用道具 举报

11#
发表于 2010-5-19 23:58:24 | 只看该作者
原帖由 lianjiang 于 2010-5-17 14:01 发表

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

89706

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

来学习一下

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

520.JPG
回复

使用道具 举报

12#
发表于 2010-5-20 06:49:58 | 只看该作者
原帖由 chen463 于 2010-5-19 23:58 发表

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

来学习一下


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

使用道具 举报

13#
发表于 2010-5-20 06:54:16 | 只看该作者
上面的脚本是按楼主要求写的。
但没有是否满足条件的检测。
假如试图作为通用工具,像一键恢复之类的来使用的话,必须加入必要的判断。
回复

使用道具 举报

14#
发表于 2010-5-20 09:35:30 | 只看该作者
原帖由 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, 下载次数: 92)

520.JPG
回复

使用道具 举报

15#
发表于 2010-5-20 09:57:47 | 只看该作者
(if "%%k"==" LOGICAL" set DRV_last_log_1hd=%%i)
--------------------------------------------------------
是"LOGICAL",不是" LOGICAL"
回复

使用道具 举报

16#
发表于 2010-5-20 10:01:32 | 只看该作者
ghost无此功能,可借助一些显示隐藏分区的工具。
回复

使用道具 举报

17#
发表于 2010-5-20 19:20:59 | 只看该作者
原帖由 lianjiang 于 2010-5-20 09:57 发表
(if "%%k"==" LOGICAL" set DRV_last_log_1hd=%%i)
--------------------------------------------------------
是"LOGICAL",不是" LOGICAL"

哦!空一格差那么多,谢谢!已经ok,两种方式刚好相反操作。
回复

使用道具 举报

18#
发表于 2010-5-20 23:28:36 | 只看该作者
不知道为什么 看到这些代码我很兴奋
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-2 22:24

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表