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

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

[复制链接]
发表于 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 编辑 ]
发表于 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
回复

使用道具 举报

 楼主| 发表于 2010-5-16 14:57:16 | 显示全部楼层
多谢楼上   但好像无法应付 盘符错乱  和判断 是否为第一块硬盘
回复

使用道具 举报

发表于 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肯定有隐藏分区。
回复

使用道具 举报

发表于 2010-5-16 15:54:40 | 显示全部楼层
原帖由 winlong102 于 2010-5-16 14:57 发表
但好像无法应付 盘符错乱  和判断 是否为第一块硬盘


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

snap0158_gdisk32a.jpg

snap0159_dsptwa.jpg
回复

使用道具 举报

发表于 2010-5-16 16:41:49 | 显示全部楼层
借助磁盘工具dsptw的参考方案:

snap0162a.jpg
回复

使用道具 举报

 楼主| 发表于 2010-5-16 20:39:58 | 显示全部楼层
多谢 各位  我试下  呵呵
回复

使用道具 举报

 楼主| 发表于 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 编辑 ]
回复

使用道具 举报

发表于 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

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

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

snap0164gd.jpg
回复

使用道具 举报

 楼主| 发表于 2010-5-17 14:43:26 | 显示全部楼层
多谢了  嘿嘿    字数补丁
回复

使用道具 举报

发表于 2010-5-19 23:58:24 | 显示全部楼层
原帖由 lianjiang 于 2010-5-17 14:01 发表

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

89706

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

来学习一下
520.JPG
回复

使用道具 举报

发表于 2010-5-20 06:49:58 | 显示全部楼层
原帖由 chen463 于 2010-5-19 23:58 发表

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

来学习一下


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

使用道具 举报

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

使用道具 举报

发表于 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
回复

使用道具 举报

发表于 2010-5-20 09:57:47 | 显示全部楼层
(if "%%k"==" LOGICAL" set DRV_last_log_1hd=%%i)
--------------------------------------------------------
是"LOGICAL",不是" LOGICAL"
回复

使用道具 举报

发表于 2010-5-20 10:01:32 | 显示全部楼层
ghost无此功能,可借助一些显示隐藏分区的工具。
回复

使用道具 举报

发表于 2010-5-20 19:20:59 | 显示全部楼层
原帖由 lianjiang 于 2010-5-20 09:57 发表
(if "%%k"==" LOGICAL" set DRV_last_log_1hd=%%i)
--------------------------------------------------------
是"LOGICAL",不是" LOGICAL"

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

使用道具 举报

发表于 2010-5-20 23:28:36 | 显示全部楼层
不知道为什么 看到这些代码我很兴奋
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-29 18:56

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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