无忧启动论坛

 找回密码
 注册
搜索
最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站数据恢复、数据保护、视频编辑
Win To Go 极致利器(IXUNCIS固态U盘)无忧启动网成立20周年!广告联系 QQ:184822951 微信:wuyouceo
楼主: nttwqz

[原创] 磁盘分区信息dpinfo 2.6.2,分区相关工具定制脚本

    [复制链接]
发表于 2020-7-13 19:20:48 | 显示全部楼层
兄弟,图中信息,如何导出到文本
>
代码太长懒的看了。
想导出到当前目录txt文本中

点评

搜索脚本定制 将 :sel 中间内容删除,改为 call :menu>"%~dp0\dpinfo.txt" 如果需要获取几乎全部变量信息,则再加一行 (set dk&set allvol&set vol)>>"%~dp0\dpinfo.txt" exit  详情 回复 发表于 2020-7-13 19:44
回复

使用道具 举报

 楼主| 发表于 2020-7-13 19:44:02 | 显示全部楼层
本帖最后由 nttwqz 于 2020-7-13 19:46 编辑
freesoft00 发表于 2020-7-13 19:20
兄弟,图中信息,如何导出到文本
>
代码太长懒的看了。

搜索脚本定制


:sel
    中间内容删除,改为
    call :menu>"%~dp0\dpinfo.txt"
    如果需要获取几乎全部变量信息,则再加一行
    (set dk&set allvol&set vol)>>"%~dp0\dpinfo.txt"
exit
如果只需要磁盘0的变量信息,那个
set dk_0>>"%~dp0\dpinfo.txt"

点评

好的。多谢!  详情 回复 发表于 2020-7-13 19:46
回复

使用道具 举报

发表于 2020-7-13 19:46:49 | 显示全部楼层
nttwqz 发表于 2020-7-13 19:44
搜索脚本定制


好的。多谢!
回复

使用道具 举报

发表于 2020-12-24 21:31:17 | 显示全部楼层
谢谢大神分享!
回复

使用道具 举报

发表于 2021-1-6 10:01:51 | 显示全部楼层
楼主辛苦了
回复

使用道具 举报

发表于 2021-1-6 10:02:06 | 显示全部楼层
谢谢分享
回复

使用道具 举报

 楼主| 发表于 2021-3-24 19:54:14 | 显示全部楼层
Win10的卷号错误bug修复原理是:
通过det disk获取的每个磁盘卷号列表是正确的,但是det part获取的分区卷号错误,找出磁盘卷列表中没有的卷号,就是错误卷号,去掉正确卷号,就是错误卷号对应的正确卷号。如果只有一个分区卷号错误,其肯定是相对应的;如果2个以上错误,对比其大小、文件系统、卷标(一般为空),一个分区只有一个与之相同的才能修复,如果错误卷号中两个分区的大小、文件系统、卷标(一般为空)完全相同,则无法修复,但是此种情况一般少见,因为错误的恢复分区居多。
回复

使用道具 举报

发表于 2021-3-25 20:59:39 | 显示全部楼层
收下试试看
回复

使用道具 举报

发表于 2021-4-11 10:50:35 | 显示全部楼层
磁盘大小能否显示为MB?因为分区时是按MB分的,能看到MB的话分区可以更精确些。

点评

问题是,怎么通过diskpart获取磁盘大小的单位MB数值?用GB换算成MB本身已经不准确。list disk/det disk都是自动单位,如果能使用diskpart以外的工具则另说。 下面是1T机械800G以上的GPT分区无损调整为三个区的  详情 回复 发表于 2021-4-11 22:26
回复

使用道具 举报

 楼主| 发表于 2021-4-11 22:26:14 | 显示全部楼层
本帖最后由 nttwqz 于 2021-4-11 22:51 编辑
szwp 发表于 2021-4-11 10:50
磁盘大小能否显示为MB?因为分区时是按MB分的,能看到MB的话分区可以更精确些。

问题是,怎么通过diskpart获取磁盘大小的单位MB数值?用GB换算成MB本身已经不准确。list disk/det disk都是自动单位,如果能使用diskpart以外的工具则另说。

下面是1T机械800G以上的GPT分区无损调整为三个区的脚本,调整好之后,是300G、300G、剩余空间
你说的应该是压缩过之后的第一个300G分区,因为分区单位GB,大小GB*1024-307208只能得到大概的数值,这就造成了实际调整后的分区可能是300.32G这样的情况,你想要的应该是更准确的数值,我不知道怎么获取磁盘分区MB这样的数值?下个分区的分区偏移量字节值换算?分区偏移量也不一定等于分区大小吧?何况这涉及超范围计算,批处理之家倒是有封装好的函数直接用call来调用。批处理本身直接计算仅支持2G以下空间的字节值,就是2147483647/1024/1024=2047,无法计算大于2147483647的数值

  1.         rem 生成GPT分区无损分区脚本
  2.         if /i "!dk_%sel_hd%_parttable!"=="GPT" (
  3.                 echo;rem %remtip%
  4.                 echo;sel disk %sel_hd%
  5.                 echo;sel part %sel_p%
  6.                 set /a desired=dk_%sel_hd%_%sel_p%_size_num*1024-307208
  7.                 echo;shrink desired=!desired!
  8.                 echo;cre part pri size=307208
  9.                 echo;format fs=ntfs quick override
  10.                 echo;assign
  11.                 echo;cre part pri
  12.                 echo;format fs=ntfs quick override
  13.                 echo;assign
  14.         )>"%temp%\dpscript.sfb"
复制代码


所以,个人忽略了上述情况,因为很多时候300.**文件管理器里也是显示成300G的,至于不是的,无所谓了。你若需要更精确的分区,可以自己写代码,本工具中就是将下个分区的偏移量字节值处理计算后设置成上个分区的MB大小,最后一个只能减去上个分区的字节偏移了,如果你会变量嵌套的话,这并不是什么难事,超范围计算函数你在批处理之家找找。
回复

使用道具 举报

发表于 2021-4-12 11:00:34 | 显示全部楼层
最近发现同一批次的盘容量也有几十兆的差距。diskpart对于显示单位好像是自动根据容量来显示成GB、MB、KB,或许先分一次区,看剩余可用能精确些,在磁盘管理的磁盘属性-卷里显示的容量是MB。俺再看看有没其它方式获取磁盘的总扇区数。

点评

全新一键分区不同知道具体MB,都是现成方案直接创建  详情 回复 发表于 2021-4-12 11:07
回复

使用道具 举报

 楼主| 发表于 2021-4-12 11:07:29 来自手机 | 显示全部楼层
本帖最后由 nttwqz 于 2021-4-12 11:09 编辑
szwp 发表于 2021-4-12 11:00
最近发现同一批次的盘容量也有几十兆的差距。diskpart对于显示单位好像是自动根据容量来显示成GB、MB、KB, ...


全新一键分区不用知道具体MB,都是现成方案直接创建

点评

硬盘管理里显示的分区单位通常是G,有2位小数,误差在5兆内才会显示.00。有点强迫症吧,所以经常要在脚本里调整下数字。  详情 回复 发表于 2021-4-12 11:24
回复

使用道具 举报

发表于 2021-4-12 11:24:03 | 显示全部楼层
nttwqz 发表于 2021-4-12 11:07
全新一键分区不用知道具体MB,都是现成方案直接创建

硬盘管理里显示的分区单位通常是G,有2位小数,误差在5兆内才会显示.00。有点强迫症吧,所以经常要在脚本里调整下数字。

点评

一般整数MB+8就好,比如307205就显示整数300G,102408就显示整数100GB  详情 回复 发表于 2021-4-12 11:37
回复

使用道具 举报

 楼主| 发表于 2021-4-12 11:37:31 来自手机 | 显示全部楼层
本帖最后由 nttwqz 于 2021-4-12 12:40 编辑
szwp 发表于 2021-4-12 11:24
硬盘管理里显示的分区单位通常是G,有2位小数,误差在5兆内才会显示.00。有点强迫症吧,所以经常要在脚本 ...


一般整数MB+8就好,比如307208就显示整数300G,102408就显示整数100GB

有整数分区计算器,可以搜搜,下面就是一个

https://www.iplaysoft.com/tools/partition-calculator/
回复

使用道具 举报

发表于 2021-4-12 16:18:57 | 显示全部楼层
捕获.PNG

不知道为啥有台电脑的硬盘型号没显示出来。

磁盘管理中保留2位小数,所以大于0.005G=5.12MB就有零头.01显示,而硬盘容量只到MB话,还是有可能会有不到0.5MB零头,安全的无零头显示还是+4以内。如果以shrink方式的话,+5也是安全的,下次试试,不过怕会影响分区序号,以前增删后序号有变化引起多引导的错误。


点评

刚研究了下偏移量字节值相减对比分区大小差距,有的相同,有的差几M,有的差几K,有的甚至差1G,看来这个不太准确,也或许需要其它计算方法。  详情 回复 发表于 2021-4-12 17:48
之前用Win7测试的时候发现其不能显示硬盘型号,所以添加限制以防出错,刚测试发现Win7不行,Win7 SP1可以,也就是7601可以。 所以需要改变系统版本号判断如下 并将搜索到的第一个name行if %ver% gtr 61 if  详情 回复 发表于 2021-4-12 17:43
回复

使用道具 举报

 楼主| 发表于 2021-4-12 17:43:34 来自手机 | 显示全部楼层
本帖最后由 nttwqz 于 2021-4-12 17:50 编辑
szwp 发表于 2021-4-12 16:18
不知道为啥有台电脑的硬盘型号没显示出来。

磁盘管理中保留2位小数,所以大于0.005G=5.12MB就有零头 ...


之前用Win7测试的时候发现其不能显示硬盘型号,所以添加限制以防出错,刚测试发现Win7不行,Win7 SP1可以,也就是7601可以。

所以需要改变系统版本号判断如下

  1. for /f "tokens=2 delims=[]" %%Q in ('ver') do for /f "tokens=2-4 delims=. " %%R in ("%%Q") do set "ver=%%R%%S"&set "verbuild=%%T"
复制代码


并将搜索到的第一个name行if %ver% gtr 61 if not defined dk_!dn!_name开头的if %ver% gtr 61改成if %ver% gtr 60 if %verbuild% gtr 7600

简单试了下,删除版本限制也并没有获取到错误的值

点评

DiskPart 版本 6.1.7601 WIN7 32位,打过SP1 型号未显示。  详情 回复 发表于 2021-4-12 18:09
回复

使用道具 举报

 楼主| 发表于 2021-4-12 17:48:27 来自手机 | 显示全部楼层
szwp 发表于 2021-4-12 16:18
不知道为啥有台电脑的硬盘型号没显示出来。

磁盘管理中保留2位小数,所以大于0.005G=5.12MB就有零头 ...

刚研究了下偏移量字节值相减对比分区大小差距,有的相同,有的差几M,有的差几K,有的甚至差1G,看来这个不太准确,也或许需要其它计算方法。
回复

使用道具 举报

发表于 2021-4-12 18:09:24 | 显示全部楼层
nttwqz 发表于 2021-4-12 17:43
之前用Win7测试的时候发现其不能显示硬盘型号,所以添加限制以防出错,刚测试发现Win7不行,Win7 SP1可 ...

DiskPart 版本 6.1.7601
WIN7 32位,打过SP1

型号未显示。
回复

使用道具 举报

发表于 2021-4-12 18:13:49 | 显示全部楼层
脚本修改后可以显示了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2021-4-22 22:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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