无忧启动论坛

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

diskpart 外壳脚本 简体中文版和英文版 Ver9.0

    [复制链接]
跳转到指定楼层
1#
发表于 2018-6-4 13:20:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dos时代菜鸟 于 2021-11-15 23:08 编辑

适用win7及以上版本。

本帖所涉及脚本已经 由 pecmd 2012 脚本取代,请移步
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1


x9.08
DP-Script-X9.12.8.7z (18.59 KB, 下载次数: 358)
采用新的 导入分区序列的算法,只需 3次调用 diskpart 就可以探测全部分区信息。
改进文本流截取,以便使一个脚本模板适应两个语言环境。
暂时还是分别提供两个语言的脚本,而 不想做成词典,以方便中文版维护。
修复 可用空间盘符探测 相关代码


使用上还是要注意
分区结构形式 转换前  是必须 要清空分区的,
gtp硬盘上是不能 设置活动分区的。
删除扩展分区前,必须先删除扩展分区里的逻辑分区。

脚本会 在 所在位置 临时生成 文件,所以 不能 对 脚本所在 盘进行操作,也不应该对正在运行的当前系统 所在盘进行操作。
附件中 包含了 win7 的 diskpart.exe 可以删除。
DP_Script-8.55.7z (79.01 KB, 下载次数: 323)

8.61 测试版 DP_SCRIPT----8.61.7z (80.38 KB, 下载次数: 52)
改进 8.60 中由于没有预设 vol_free 占位 导致当 detail vol  无法获取 vol_free 时free/size 字段错位的问题。
增加可以 探测到 卷 的可用空间,
尝试探测 不在 list part 列表中的 卷的信息,并将其信息加入列表,因为其没有对应的 part ,所以只能对其进行 格式化 和分配 盘符
某些 u盘 select disk 后自动将  part 选中为焦点,导致 无法探测 该 part 信息,针对这种情况,做了适量调整,但愿能 更多的识别这样的 u盘。










评分

参与人数 6无忧币 +26 收起 理由
qh6420933 + 5 很给力!
maomihuacha + 1
liangyi + 5 很给力!
zhczf + 5 期待出一个漂亮的图形界面版的
熄灭的火焰 + 5 很给力!
freesoft00 + 5

查看全部评分

推荐
 楼主| 发表于 2018-6-4 13:22:07 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-4 14:15 编辑

考虑到 操作 后 要进行 列表 信息更新,所以,相较  hd3y.cmd ,内部 脚本 区段 进行了 调整。

发现 删除 、创建 卷分区以后,卷 vol 号 可能发生混乱错位,但,程序不会 调用 列表中的 这个 vol ,只是用于区分 改卷是否支持 分配盘符。用户可以通过 手动  刷新列表 来纠正 这个显示错误。
回复

使用道具 举报

3#
发表于 2018-6-4 15:46:42 | 只看该作者
支持楼主授人以渔的行为!
回复

使用道具 举报

4#
发表于 2018-6-4 16:19:02 | 只看该作者
支持一下。
回复

使用道具 举报

5#
发表于 2018-6-4 16:25:47 来自手机 | 只看该作者
真有精力,显示信息够详细!

我已经变懒了~

也可能我一直都懒
回复

使用道具 举报

6#
 楼主| 发表于 2018-6-4 21:54:27 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-4 22:04 编辑

轻微改动了一下
可以显示 vhd 盘对应的文件名,可以显示 vhd 是否可扩展,可以显示 disk 的  Dyn 性质。
在 1楼
dp-script-7.84.cmd

感谢  freesoft00 提供的数据文本。

另外 , vhd 方面的 操作,可能要 单独 另写 脚本。这里暂时 先 不考虑 加入 vhd 相关的功能。

点评

vhd单独也可以。要不要操作的项目太多了。 磁盘分区的单独一个。 vhd操作的如果 兄弟写可以单独一个。  详情 回复 发表于 2018-6-4 22:03
回复

使用道具 举报

7#
发表于 2018-6-4 22:01:49 | 只看该作者
好东西的分享
回复

使用道具 举报

8#
发表于 2018-6-4 22:03:38 | 只看该作者
dos时代菜鸟 发表于 2018-6-4 21:54
轻微改动了一下
可以显示 vhd 盘对应的文件名,可以显示 vhd 是否可扩展,可以显示 disk 的  Dyn 性质。
...

vhd单独也可以。要不要操作的项目太多了。
磁盘分区的单独一个。
vhd操作的如果 兄弟写可以单独一个。

点评

还是要 请 帮忙 测试下 dyn 方面 是否能够 准确 定位。  详情 回复 发表于 2018-6-4 22:07
回复

使用道具 举报

9#
 楼主| 发表于 2018-6-4 22:07:30 | 只看该作者
freesoft00 发表于 2018-6-4 22:03
vhd单独也可以。要不要操作的项目太多了。
磁盘分区的单独一个。
vhd操作的如果 兄弟写可以单独一个。

还是要 请 帮忙 测试下  dyn 方面 是否能够 准确 定位。

点评

硬盘分区序列 DiskPart:D:_6.1.7601,脚本:D: ------------------------------------------------------------------------------------------------  详情 回复 发表于 2018-6-4 22:22
回复

使用道具 举报

10#
发表于 2018-6-4 22:22:13 | 只看该作者
dos时代菜鸟 发表于 2018-6-4 22:07
还是要 请 帮忙 测试下  dyn 方面 是否能够 准确 定位。


                          硬盘分区序列                                  DiskPart:D:_6.1.7601,脚本:D:
---------------------------------------------------------------------------------------------------------
  Num  Vol  HD:P   LTR   Fs       Size   Label         类型_偏移_活动_状态_信息
    1 ----   0    ----  -----  --------  ------------  Disk#0~0B/30GB~Bas~MBR~联机~~(VMware, VMware Virtual S SCSI Disk Device)
    2    2   0:1    C   NTFS      20 GB  系统盘符C         主要.1024KB.是.正常.系统
    3    3   0:2    D   NTFS       9 GB                主要.20GB.否.正常.
    4 ----   1    ----  -----  --------  ------------  Disk#1~0B/20GB~Dyn~MBR~联机~~(VMware, VMware Virtual S SCSI Disk Device)
    5    *   1:2    *            992 KB                动态数据.31KB.否
    6    0   1:1    L   FAT32     19 GB                动态数据.1024KB.是.正常.
    7 ----   2    ----  -----  --------  ------------  Disk#2~0B/1200GB~Bas~GPT~联机~~(VMware, VMware Virtual S SCSI Disk Device)
    8    8   2:1    *   NTFS     500 MB                恢复.1024KB.晕.正常.已隐藏
    9    9   2:2    *   FAT32    100 MB                系统.501MB.晕.正常.已隐藏
   10    *   2:3    *            128 MB                保留.601MB.晕
   11    4   2:4    H   NTFS      50 GB  GPT磁盘的第一个分区   主要.729MB.晕.正常.
   12    5   2:5    I   NTFS     200 GB  movie         主要.50GB.晕.正常.
   13    6   2:6    J   NTFS     200 GB                主要.250GB.晕.正常.
   14    7   2:7    K   NTFS     749 GB                主要.450GB.晕.正常.
---------------------------------------------------------------------------------------------------------
---当前焦点:Num=  ;  HD:P=

---主菜单------------------------------------------------------------------------------------------------
   L.装卸盘符              D.删除分区                  C.创建分区               F.格式化分区
   S.清除某硬盘所有分区    T.初始化某硬盘分区形式      V.活动分区
   R.刷新列表              X.退出
---------------------------------------------------------------------------------------------------------
---请选择一个操作:___
回复

使用道具 举报

11#
发表于 2018-6-4 22:23:01 | 只看该作者
第二个磁盘是动态磁盘,显示出来了。

点评

多谢支持。多谢测试。  详情 回复 发表于 2018-6-4 22:27
回复

使用道具 举报

12#
 楼主| 发表于 2018-6-4 22:27:13 | 只看该作者
freesoft00 发表于 2018-6-4 22:23
第二个磁盘是动态磁盘,显示出来了。

多谢支持。多谢测试。

点评

客气了。 多谢的是你,分享了不少好东西给大家。  详情 回复 发表于 2018-6-4 22:32
回复

使用道具 举报

13#
发表于 2018-6-4 22:27:47 | 只看该作者

                          硬盘分区序列                                  DiskPart:D:_6.1.7601,脚本:D:
---------------------------------------------------------------------------------------------------------
  Num  Vol  HD:P   LTR   Fs       Size   Label         类型_偏移_活动_状态_信息
    1 ----   0    ----  -----  --------  ------------  Disk#0~0B/30GB~Bas~MBR~联机~~(VMware, VMware Virtual S SCSI Disk Device)
    2    8   0:1    C   NTFS      20 GB  系统盘符C         主要.1024KB.是.正常.系统
    3    9   0:2    D   NTFS       9 GB                主要.20GB.否.正常.
    4 ----   1    ----  -----  --------  ------------  Disk#1~9GB/20GB~Dyn~MBR~联机~~(VMware, VMware Virtual S SCSI Disk Device)
    5    *   1:1    *             19 GB                动态数据.31KB.否
    6 ----   2    ----  -----  --------  ------------  Disk#2~0B/1200GB~Dyn~GPT~联机~~(VMware, VMware Virtual S SCSI Disk Device)
    7    5   2:1    *   NTFS     500 MB                恢复.1024KB.晕.正常.已隐藏
    8    6   2:2    *   FAT32    100 MB                系统.501MB.晕.正常.已隐藏
    9    *   2:8    *           1024 KB                动态保留.601MB.晕
   10    *   2:3    *            127 MB                保留.602MB.晕
   11    3   2:4    H   NTFS    1199 GB  GPT磁盘的第一个分区   动态数据.729MB.晕.正常.
---------------------------------------------------------------------------------------------------------
---当前焦点:Num=  ;  HD:P=

---主菜单------------------------------------------------------------------------------------------------
   L.装卸盘符              D.删除分区                  C.创建分区               F.格式化分区
   S.清除某硬盘所有分区    T.初始化某硬盘分区形式      V.活动分区
   R.刷新列表              X.退出
---------------------------------------------------------------------------------------------------------
---请选择一个操作:___
回复

使用道具 举报

14#
发表于 2018-6-4 22:30:25 | 只看该作者
第二和第三磁盘是动态。下面是第三磁盘详细信息。动态磁盘无法显示分区盘符。这个list part就是无法显示的那没有办法。动态磁盘是动态卷,只能在卷列表中显示盘符。

VMware, VMware Virtual S SCSI Disk Device
磁盘 ID: {FAEEC137-E424-414F-AD2E-24E6E2D3AC4E}
类型   : SAS
状态 : 联机
路径   : 0
目标 : 2
LUN ID : 0
位置路径 : PCIROOT(0)#PCI(1500)#PCI(0000)#SAS(P00T02L00)
当前只读状态: 否
只读: 否
启动磁盘: 否
页面文件磁盘: 否
休眠文件磁盘: 否
故障转储磁盘: 否
群集磁盘  : 否

  卷 ###      LTR  标签         FS     类型        大小     状态       信息
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  卷     0     K                NTFS   简单           749 GB  正常

  卷     1     J                NTFS   简单           200 GB  正常

  卷     2     I   movie        NTFS   简单           200 GB  正常

  卷     3     H   GPT磁盘的第一个分区  NTFS   简单            50 GB  正常

  卷     5                      NTFS   磁盘分区         500 MB  正常         已
隐藏
  卷     6                      FAT32  磁盘分区         100 MB  正常         已
隐藏
回复

使用道具 举报

15#
发表于 2018-6-4 22:32:21 | 只看该作者
dos时代菜鸟 发表于 2018-6-4 22:27
多谢支持。多谢测试。

客气了。
多谢的是你,分享了不少好东西给大家。
回复

使用道具 举报

16#
 楼主| 发表于 2018-6-4 23:58:37 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-5 00:03 编辑

可能是 动态磁盘 卷 无法 作为 part 进行操作,它可能被关联成了 其他分区的一部分 。
你看 那几个卷 的size 相加  的结果。


刚更新了下,支持 对 分区调整大小了。在1楼。
回复

使用道具 举报

17#
 楼主| 发表于 2018-6-5 10:48:40 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-5 12:32 编辑

改进了一下 显示 行溢出 的问题,增加字符串 阉割 函数,如果字符串 长度超过指定值,就只显示其 前后两端 的部分内容。
增加了 一个 特别说明
改进 刷新 模块

更新 已经 放到一楼


唉,发现 阉割字符串 函数 搞复杂了,不用计算字符串长度 再 进行比较,可以直接 截取字符串 指定位置字符,如果该位置没有字符,就说明 字符串没有那么长。
不改了,先这么着吧。
回复

使用道具 举报

18#
 楼主| 发表于 2018-6-5 13:48:31 | 只看该作者
可能是 太困了,居然 把一个  公用变量 给 “及时”的清理的。重新 更新下,Num 是 公用变量。

http://wuyou.net/forum.php?mod=a ... 8MTE5OHw0MDk0NTU%3D


先到这里吧,休息休息去了。
回复

使用道具 举报

19#
 楼主| 发表于 2018-6-5 14:39:34 | 只看该作者
十分抱歉,今日太困,不能再玩了。
中午更新 几个版本 都有小问题,请 下载的 重新下载。 7.93 版本,在一楼。


回复

使用道具 举报

20#
发表于 2018-6-5 17:46:10 | 只看该作者

楼主提个小意见,就是第一列编号这个位置能不能改为只对磁盘进行编号排序呢?现在是磁盘和分区混在一起编号排序的

点评

创建分区,改变硬盘分区模式,都需要选择硬盘进行操作,硬盘分区删除以后,也要对硬盘资讯进行刷新,如果想手动刷新某个硬盘的信息,也需要选择硬盘,很多针对硬盘的操作都要求用户选择硬盘,硬盘没有编号,不行,会  详情 回复 发表于 2018-6-5 18:03
创新分区需要选硬盘  详情 回复 发表于 2018-6-5 17:58
回复

使用道具 举报

21#
 楼主| 发表于 2018-6-5 17:58:28 来自手机 | 只看该作者
liangyi 发表于 2018-6-5 17:46
楼主提个小意见,就是第一列编号这个位置能不能改为只对磁盘进行编号排序呢?现在是磁盘和分区混在一起编 ...

创新分区需要选硬盘
回复

使用道具 举报

22#
发表于 2018-6-5 18:02:04 | 只看该作者
太牛了,这几天自己快被分区的批处理搞疯了
回复

使用道具 举报

23#
 楼主| 发表于 2018-6-5 18:03:34 来自手机 | 只看该作者
liangyi 发表于 2018-6-5 17:46
楼主提个小意见,就是第一列编号这个位置能不能改为只对磁盘进行编号排序呢?现在是磁盘和分区混在一起编 ...

创建分区,改变硬盘分区模式,都需要选择硬盘进行操作,硬盘分区删除以后,也要对硬盘资讯进行刷新,如果想手动刷新某个硬盘的信息,也需要选择硬盘,很多针对硬盘的操作都要求用户选择硬盘,硬盘没有编号,不行,会很麻烦。

点评

可能楼主误解我要表达的意思了,我是说能不能实现第一列只对硬盘编号显示,而第一列不显示分区编号  详情 回复 发表于 2018-6-5 18:11
回复

使用道具 举报

24#
发表于 2018-6-5 18:11:17 | 只看该作者
dos时代菜鸟 发表于 2018-6-5 18:03
创建分区,改变硬盘分区模式,都需要选择硬盘进行操作,硬盘分区删除以后,也要对硬盘资讯进行刷新,如果 ...

可能楼主误解我要表达的意思了,我是说能不能实现第一列只对硬盘编号显示,而第一列不显示分区编号

点评

那有怎么选择分区呢?  详情 回复 发表于 2018-6-5 19:11
回复

使用道具 举报

25#
 楼主| 发表于 2018-6-5 19:11:34 来自手机 | 只看该作者
liangyi 发表于 2018-6-5 18:11
可能楼主误解我要表达的意思了,我是说能不能实现第一列只对硬盘编号显示,而第一列不显示分区编号

那有怎么选择分区呢?

点评

[attachimg]372509[/attachimg] 其实我想表达的是,在7.97版的基础上能否这样调整,这样会不会辨识好点,编程小白+强迫症只能给这些意见,无法提出技术类的建议,楼主莫怪  详情 回复 发表于 2018-6-5 22:17
估计他的意思是第一列只显示盘符序号,其它都是空的。 第二列或者其它列再显示分区列表。 分开显示。 感觉不是太有必要。 因为有一列是磁盘+分区的列表  详情 回复 发表于 2018-6-5 19:18
回复

使用道具 举报

26#
发表于 2018-6-5 19:18:30 | 只看该作者
dos时代菜鸟 发表于 2018-6-5 19:11
那有怎么选择分区呢?


估计他的意思是第一列只显示磁盘序号,其它都是空的。
第二列或者其它列再显示分区列表。
分开显示。
感觉不是太有必要。
因为有一列是磁盘+分区的列表

点评

嗯,这个要这样理解,确实有为了好看不要效率的嫌疑,因为脚本里面,以后可能还会加东西,涉及到对列表文本流中特定字符的定位,统一位置,统一格式有利于脚本编写和运行效率。  详情 回复 发表于 2018-6-5 19:28
回复

使用道具 举报

27#
 楼主| 发表于 2018-6-5 19:28:34 来自手机 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-5 21:33 编辑
freesoft00 发表于 2018-6-5 19:18
估计他的意思是第一列只显示磁盘序号,其它都是空的。
第二列或者其它列再显示分区列表。
分开显示。 ...
已经修改 main_list 段,在不影响效率的前提下 ,改了一下 显示效果。


嗯,这个要这样理解,有臭美嫌疑啊。因为脚本里面,以后可能还会加东西,涉及到对列表文本流中特定字符的定位,统一位置,统一格式有利于脚本编写和运行效率。

点评

一个check.l 函数解决各种情况的用户录入选择,有利于提高效率。  详情 回复 发表于 2018-6-5 19:30
回复

使用道具 举报

28#
 楼主| 发表于 2018-6-5 19:30:43 来自手机 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-5 21:35 编辑
dos时代菜鸟 发表于 2018-6-5 19:28
嗯,这个要这样理解,确实有为了好看不要效率的嫌疑,因为脚本里面,以后可能还会加东西,涉及到对列表文 ...


一个check.l 函数解决各种情况的用户录入选择,有利于提高效率。

可以考虑 用 main_list 段的程序 改变显示输出内容。而不改变  原始 列表文件。
回复

使用道具 举报

29#
 楼主| 发表于 2018-6-5 21:08:05 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-5 21:46 编辑

看看,这样显示 行不行 ?

感觉 在输入 Num 的时候 能容易 检索一点儿吧。不知道 liangyi 是不是这个意思。我这几天睡得太晚,理解能力都降低了。

另外,如果 还是出现 有 行显示溢出 折行的现象,可以 在 主菜单 状态下 将 cmd 窗口最大化,然后在回车,就可以刷新显示。


DP_script-temp.zip (5.98 KB, 下载次数: 2)
修改 Main_list 段内容入下,可实现 上图 效果。
main_list 段 是专门负责 将  partlist.txt 的内容 以一定的格式显示 的函数,因为 不需要修改 partlist.txt 本身,所以 可以随意 定制显示列表。但是如果太复杂,也会影响 运算效率。
下面 代码 没有变动 太大,应该不会影响效率。

  1. :MAIN_list
  2. rem 考虑cmd窗口空间,vhd 文件信息可能被阉割。
  3. cls
  4. echo.
  5. echo                           硬盘分区序列                                  DiskPart:!DPD!_!dpver!,脚本:%~d0
  6. echo ---------------------------------------------------------------------------------------------------------
  7. echo  HDn  Pn  Vol  HD:P_  LTR   Fs       Size   Label         类型_偏移_活动_状态_信息
  8. for %%a in (lx005 disk_name2 disk_lx2) do set "%%a="
  9. for /f "skip=1 delims=" %%x in ('type !list0!') do (
  10.   set "lx005=%%x"
  11.   for /f "tokens=1,2,8" %%a in ("%%x") do (
  12.     if not "%%b"=="----" (
  13.       echo    ^|!lx005:~1!
  14.     ) else (
  15.       for /f "tokens=1,2 delims=(" %%h in ("!lx005:~55!") do (
  16.         set "disk_lx2=%%h"
  17.         call :str_mid "(%%~i" 38 &  SET "disk_name2=!str_mid!" & set "str_mid="
  18.       )
  19.       echo !lx005:~1,4! ----!lx005:~6,48! !disk_lx2!!disk_name2!
  20.     )
  21.   )
  22. )
  23. echo ---------------------------------------------------------------------------------------------------------
  24. for %%a in (lx005 disk_name2 disk_lx2) do set "%%a="
  25. echo ---当前焦点:Num=!n!  ;  HD:P=!hdp2!

  26. EXIT /B

复制代码


回复

使用道具 举报

30#
发表于 2018-6-5 22:17:09 | 只看该作者
本帖最后由 liangyi 于 2018-6-5 22:19 编辑
dos时代菜鸟 发表于 2018-6-5 19:11
那有怎么选择分区呢?





其实我想表达的是,在7.97版的基础上能否这样调整,这样会不会辨识好点,编程小白+强迫症只能给这些意见,无法提出技术类的建议,楼主莫怪

点评

hd:p 用于表示 分区 或 硬盘 的特征的,没有 冒号表示 是一个盘,有冒号 表示是 第几个硬盘的第几个分区。 是不能为 * 的 vol 是系统给的,如果为 * 说明 是 分区 却不能被 win 加载盘符 ltr 也是系统给的 ,  详情 回复 发表于 2018-6-5 22:34
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 15:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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