无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: nttwqz
打印 上一主题 下一主题

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

    [复制链接]
31#
发表于 2018-6-13 13:57:17 | 只看该作者
Anson4 发表于 2018-6-13 12:59
能不能做到与语言无关呢?

我想到的只是设置两套系统的不同关键词。
批处理先判断系统语言环境,然后根据环境使用不同的关键词作为变量值。这样两套系统都可以在一个批处理用。

点评

我也是这个思路,但是批处理毕竟是给不同语言的人用的,需要人类语言交互的。还是要用 语言 在界面上显示信息告诉 用户的,就是 这部分 交互文字 翻译起来费劲。 跟 电脑交流的 需要几个词 就 记载几个词也就是了。  详情 回复 发表于 2018-6-13 15:15
回复

使用道具 举报

32#
发表于 2018-6-13 13:59:32 | 只看该作者
Anson4 发表于 2018-6-13 12:37
请问 findstr fsutil 需要什么版本?
正常系统英文版 Windows 10 1803,运行出现下图(管理员权限也是): ...

就是呀。你的英文系统cmd能显示中文。是你设置了输入法的部分吧。我记着好像是设置了中文输入后中文的文本就可以显示正确了。
忘记是不是这个原因了。

点评

对于多语言环境,有专门的设置: [attachimg]372883[/attachimg]  详情 回复 发表于 2018-6-13 17:21
回复

使用道具 举报

33#
发表于 2018-6-13 14:09:23 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-13 15:08 编辑
nttwqz 发表于 2018-6-13 13:56
没想到还有这样的妙用,type类似的妙用还真不少。有空了试一下,看那种判断更简洁好用。

我正好有这 ...

detail disk 获取 vol 信息没有问题,但是 怎么来获取 是否 是 active 呢?
如果涉及到 要 select part 的操作可能就不灵了,比如删除分区,不过我没试过 通过 select vol 选中焦点 再delete part 是否会成功.
所以我还是 要做个判断 是否 select part 成功了,如果没成功,就要做个标记,以后 对这个 卷的操作 不能通过 select part 的方式获取焦点。

刚测试,不能被 select part 的分区 只能进行 格式化和分配盘符,其他的都不行,删除、调整大小的都不行,但是 win10 下用 diskpart 干掉该盘全部分区以后新建一个 分区,offset 默认是 1024k ,新建分区就可以 被 select part 了。 不知道以前那个 不能被 select part 的分区是怎么来的,现在没有了,还没办法测试了。呵呵。


如果只是通过  list part 获取 part 信息,可以 用 去掉 整行第一个字符后获得的字符串参与 for 运算,就不用另写判断语句了。不管他有没有 * 都 踢掉了。就是要外面在包裹一层 for 而已。 不然 单独再来一套 命令,会降低效率。
  1. for /f "delims=" %%x in ('type !dpscript! ^|diskpart') do (
  2.   set "lx001=%%x"
  3.   if "!lx001:~0,1!"=="*" set "lx001= !lx001:~1!"
  4. for /f "tokens=1,2" %%a in ("!lx001!") do (
  5.      echo ...
  6.   )
  7. )
复制代码



回复

使用道具 举报

34#
发表于 2018-6-13 14:55:37 | 只看该作者
无忧启动论坛在批处理上除五大等少数人外你是最牛的!赞一个!!!
回复

使用道具 举报

35#
发表于 2018-6-13 15:14:40 | 只看该作者
回帖支持
回复

使用道具 举报

36#
发表于 2018-6-13 15:15:36 | 只看该作者
freesoft00 发表于 2018-6-13 13:57
我想到的只是设置两套系统的不同关键词。
批处理先判断系统语言环境,然后根据环境使用不同的关键词作为 ...

我也是这个思路,但是批处理毕竟是给不同语言的人用的,需要人类语言交互的。还是要用 语言 在界面上显示信息告诉 用户的,就是 这部分 交互文字 翻译起来费劲。
跟 电脑交流的 需要几个词 就 记载几个词也就是了。
我的那个  diskpart 的 cmd 中文版是可以 在 英文cp=437 环境下 准确生成列表的,关键是 给人看的 还有 主菜单、提示语等等。这些玩意儿不翻译也不行啊。

点评

英文好的也没有人愿意去翻译这些。玩的人少。 英文不好没有办法。我都是谷歌、百度、bing来回翻译的。 bing翻译成英文,然后英文复制到百度看是否能正确翻译成中文,然后再到谷歌试试是否能正确翻译成中文。 然  详情 回复 发表于 2018-6-13 17:00
回复

使用道具 举报

37#
发表于 2018-6-13 17:00:25 | 只看该作者
dos时代菜鸟 发表于 2018-6-13 15:15
我也是这个思路,但是批处理毕竟是给不同语言的人用的,需要人类语言交互的。还是要用 语言 在界面上显示 ...


英文好的也没有人愿意去翻译这些。玩的人少。
英文不好没有办法。我都是谷歌、百度、bing来回翻译的。
bing翻译成英文,然后英文复制到百度看是否能正确翻译成中文,然后再到谷歌试试是否能正确翻译成中文。
然后再反复,到谷歌翻译成英文,然后再到其它翻译网址测试翻译的英文。
反复修改。
不过有些语句或者此翻译不好或者不准确。

点评

显示出来的东西是什么语言能否看懂那只是问题之一,最重要的是必须能准确地生成相关信息。 现状是在英文环境下批处理工作都不正常了。  详情 回复 发表于 2018-6-13 17:16
回复

使用道具 举报

38#
发表于 2018-6-13 17:16:43 | 只看该作者
freesoft00 发表于 2018-6-13 17:00
英文好的也没有人愿意去翻译这些。玩的人少。
英文不好没有办法。我都是谷歌、百度、bing来回翻译的。 ...

显示出来的东西是什么语言能否看懂那只是问题之一,最重要的是必须能准确地生成相关信息。
现状是在英文环境下批处理工作都不正常了。

点评

现在尚没有精力考虑英文环境执行问题 而且 这东西写出来都是意淫,有几个外国老会用?  详情 回复 发表于 2018-6-13 17:20
回复

使用道具 举报

39#
 楼主| 发表于 2018-6-13 17:20:05 来自手机 | 只看该作者
Anson4 发表于 2018-6-13 17:16
显示出来的东西是什么语言能否看懂那只是问题之一,最重要的是必须能准确地生成相关信息。
现状是在英文 ...

现在尚没有精力考虑英文环境执行问题

而且 这东西写出来都是意淫,有几个外国老会用?

点评

其实不一定是老外,在国内外资公司的办事处基本都要求用英文系统。  详情 回复 发表于 2018-6-13 17:23
回复

使用道具 举报

40#
发表于 2018-6-13 17:21:41 | 只看该作者
freesoft00 发表于 2018-6-13 13:59
就是呀。你的英文系统cmd能显示中文。是你设置了输入法的部分吧。我记着好像是设置了中文输入后中文的文 ...

对于多语言环境,有专门的设置:

回复

使用道具 举报

41#
发表于 2018-6-13 17:23:36 | 只看该作者
nttwqz 发表于 2018-6-13 17:20
现在尚没有精力考虑英文环境执行问题

而且 这东西写出来都是意淫,有几个外国老会用?

其实不一定是老外,在国内外资公司的办事处基本都要求用英文系统。

点评

老外里面搞 win 系统维护的 有多少? 搞系统维护的 用 diskpart 搞分区 又有多少?  详情 回复 发表于 2018-6-13 19:58
回复

使用道具 举报

42#
发表于 2018-6-13 19:58:29 | 只看该作者
Anson4 发表于 2018-6-13 17:23
其实不一定是老外,在国内外资公司的办事处基本都要求用英文系统。

老外里面搞 win 系统维护的 有多少?
搞系统维护的 用 diskpart 搞分区 又有多少?

点评

英文系统未必就是老外用,也未必就是老外维护。 这个没必要讨论下去,我也就是这么一说而已。  详情 回复 发表于 2018-6-13 20:27
应该说现在还用dos的还有多少?  详情 回复 发表于 2018-6-13 20:27
回复

使用道具 举报

43#
发表于 2018-6-13 20:27:00 | 只看该作者
dos时代菜鸟 发表于 2018-6-13 19:58
老外里面搞 win 系统维护的 有多少?
搞系统维护的 用 diskpart 搞分区 又有多少?

应该说现在还用dos的还有多少?
回复

使用道具 举报

44#
发表于 2018-6-13 20:27:24 | 只看该作者
dos时代菜鸟 发表于 2018-6-13 19:58
老外里面搞 win 系统维护的 有多少?
搞系统维护的 用 diskpart 搞分区 又有多少?

英文系统未必就是老外用,也未必就是老外维护。
这个没必要讨论下去,我也就是这么一说而已。
回复

使用道具 举报

45#
发表于 2018-6-13 23:41:46 | 只看该作者
esp分区,这个是uefi必须的,支持楼主。。。
回复

使用道具 举报

46#
发表于 2018-6-14 16:40:56 | 只看该作者
支持一下!弄这种东西就是费时。
回复

使用道具 举报

47#
 楼主| 发表于 2018-6-14 22:53:43 | 只看该作者
zhangmi 发表于 2018-6-13 08:26
大师,有个问题请教一下,我的电脑加载esp以后,不能操作这么解决,百度说是更改安全选项,但是家庭版没这 ...

没那么麻烦,该分区不过需要管理员权限而已

只需任务管理器结束资源管理器(explorer.exe),然后以系统管理权限创建此任务即可正常浏览该分区

如果你觉得麻烦可以保存下面的命令为批处理文件,以管理员身份运行即可。

  1. taskkill /im explorer.exe /f && start explorer.exe
复制代码

点评

感谢解答  发表于 2018-6-15 16:29
回复

使用道具 举报

48#
 楼主| 发表于 2018-6-14 23:58:23 | 只看该作者
dos时代菜鸟 发表于 2018-6-13 09:20
请教 :能否确定 ,diskpart 识别为gpt  "系统" 的分区 Id 一定是  efi 的 c12a7328-f81f-11d2-ba4b-00a0c9 ...

set /a 判断纯数字漏洞太多,你不妨试试 “5i” “5 i” 这样的情况,我尝试了一番之后才使用这个“比较简单的方式”,而且我之前还搜索了批处理之家,就这个代码短点儿

下面的for是神马情况?用引号作为分隔符,参数直接空格可以省略这我都知道,可是eol^=在引号外面就不明白了。这也是种判断方法

delims 解法示例:
  1. @echo off

  2. set "阿拉伯数字=0123456789"
  3. set "大写字母=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  4. set "小写字母=abcdefghijklmnopqrstuvwxyz"

  5. for /f "tokens=1*delims=%阿拉伯数字%%大写字母%%小写字母%"eol^= %%a in (
  6.    "#你的字符串#"
  7. ) do (
  8.    if %%b==# (echo 合法) else (echo 不合法)
  9. )

  10. pause
复制代码


点评

eol^= 在这里应该是多余的。 在 %你的字符串% 前后加上一个 # 字符,一是防止 %你的字符串% 为空值而使得 do 语句不被执行,二是防止 %你的字符串% 出现以 ; 字符开头而使得 do 语句不被执行。 一般 for /f 写成  详情 回复 发表于 2018-6-15 23:59
还真是奇怪 的写法啊。需要研究学习下。  详情 回复 发表于 2018-6-15 08:12
回复

使用道具 举报

49#
发表于 2018-6-15 00:28:01 | 只看该作者
PE下总是得手动找ESP分区,有了这个工具就好了,感谢分享
回复

使用道具 举报

50#
发表于 2018-6-15 08:12:33 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-15 09:18 编辑
nttwqz 发表于 2018-6-14 23:58
set /a 判断纯数字漏洞太多,你不妨试试 “5i” “5 i” 这样的情况,我尝试了一番之后才使用这个“比较 ...

还真是奇怪 的写法啊。需要研究学习下。

那个 意思好像是  明确 字符串中 除字母和数字以外的字符都是不合法的,包括 加减乘除符号、句号、逗号、分号等也是不合法的,任何一个数字、字母都可以是 文本流行内字段分隔符,而只截取被分割的两个字段


这样 如果 用户输入的 是一个 要 需要计算机 计算的 表达式呢? 还得 研究着 改改。

捕获.PNG (40.52 KB, 下载次数: 277)

捕获.PNG

点评

他那方法我试过,别说表达式,就是特殊符号,比如^|都支持  详情 回复 发表于 2018-6-15 09:44
回复

使用道具 举报

51#
 楼主| 发表于 2018-6-15 09:44:51 来自手机 | 只看该作者
dos时代菜鸟 发表于 2018-6-15 08:12
还真是奇怪 的写法啊。需要研究学习下。

那个 意思好像是  明确 字符串中 除字母和数字以外的字符都是 ...

他那方法我试过,别说表达式,就是特殊符号,比如^<>|都支持

点评

要是遇到 以 = 或 , 开头的,或者其他特殊符号开头的。 可能还是不行  详情 回复 发表于 2018-6-15 20:48
回复

使用道具 举报

52#
发表于 2018-6-15 20:48:33 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-15 22:40 编辑
nttwqz 发表于 2018-6-15 09:44
他那方法我试过,别说表达式,就是特殊符号,比如^|都支持

要是遇到 以 = 或 , 开头的,或者其他特殊符号开头的。 可能还是不行

干脆如下命令看看行不行吧。
  1. set /a x=运算表达式 2>nul || set /a x=0
复制代码


呵呵呵,感觉好像走弯路了。
回复

使用道具 举报

53#
发表于 2018-6-15 23:54:53 | 只看该作者
诈尸出来,支持一下!
回复

使用道具 举报

54#
发表于 2018-6-15 23:59:08 | 只看该作者
本帖最后由 pznpt 于 2018-6-16 00:01 编辑
nttwqz 发表于 2018-6-14 23:58
set /a 判断纯数字漏洞太多,你不妨试试 “5i” “5 i” 这样的情况,我尝试了一番之后才使用这个“比较 ...


eol^= 在这里应该是多余的。
在 %你的字符串% 前后加上一个 # 字符,一是防止 %你的字符串% 为空值而使得 do 语句不被执行,二是防止 %你的字符串% 出现以 ; 字符开头而使得 do 语句不被执行。

一般 for /f 写成这样子:
for /f "tokens=1* eol= delims=1234567890" %%a in ("%你的字符串%") do (...)
这样子貌似会忽略以空格开头的行,就是说 %你的字符串% 以空格开头,do 语句不会被执行。

我觉得改成这样可能会更好一点(输入双引号不会闪退):
@echo off
set /p str=输入数字:
for /f "tokens=1* delims=1234567890" %%a in ("#%str:"=""%#") do (
    if "%%b" == "#" (echo 纯数字) else (echo 非纯数字或空值)
)

点评

直接set /a 赋值,把反馈>nul,用errorlevel做判断,不成功就赋值成0 ,就完事儿了。 字符串合理的自然赋值成功,不合理的自然失败。  详情 回复 发表于 2018-6-16 06:56

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

55#
发表于 2018-6-16 06:56:20 来自手机 | 只看该作者
本帖最后由 dos时代菜鸟 于 2018-6-16 09:33 编辑
pznpt 发表于 2018-6-15 23:59
eol^= 在这里应该是多余的。
在 %你的字符串% 前后加上一个 # 字符,一是防止 %你的字符串% 为空值而 ...

直接set /a 赋值,把反馈>nul,用errorlevel做判断,不成功就赋值成0 ,就完事儿了。
字符串合理的自然赋值成功,不合理的自然失败为0.

点评

楼主好像是判断输入字符串是否为纯数字(digit),而不是判断是否为合法的数(number)。 -2, 0x3c, 3.14, 1.24560000e+005 这些都是合法的数,并不代表这些数就是纯数字。因为这些字符串里面含有非0-9字符。 set  详情 回复 发表于 2018-6-16 09:51
回复

使用道具 举报

56#
发表于 2018-6-16 09:51:51 | 只看该作者
dos时代菜鸟 发表于 2018-6-16 06:56
直接set /a 赋值,把反馈>nul,用errorlevel做判断,不成功就赋值成0 ,就完事儿了。
字符串合理的自然 ...

楼主好像是判断输入字符串是否为纯数字(digit),而不是判断是否为合法的数(number)。

-2, 0x3c, 3.14, 1.24560000e+005 这些都是合法的数,并不代表这些数就是纯数字。因为这些字符串里面含有非0-9字符。

set /a 100*2
虽然 ErrorLevel 为 0,但 100*2 这个字符串并不是纯数字

set /a 086
同样,虽然 ErrorLevel 为 1,但 086 这个字符串是纯数字

点评

他是要通过用户输入的数字参与下一步判断数字大小是否在范围内,比较大下这事儿,要求变量是数字。  详情 回复 发表于 2018-6-16 10:07
好多年不见了,老兄还是一如既往地严谨啊!  详情 回复 发表于 2018-6-16 10:06
回复

使用道具 举报

57#
发表于 2018-6-16 10:06:48 | 只看该作者
pznpt 发表于 2018-6-16 09:51
楼主好像是判断输入字符串是否为纯数字(digit),而不是判断是否为合法的数(number)。

-2, 0x3c, 3.14, ...

好多年不见了,老兄还是一如既往地严谨啊!

点评

呵呵,N久不逛论坛了,昨天想下载一个工具,就登陆了,顺便就回了一贴。 无忧还是老样子,向无忧的新老朋友问声好!  详情 回复 发表于 2018-6-16 10:54

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

58#
发表于 2018-6-16 10:07:20 来自手机 | 只看该作者
pznpt 发表于 2018-6-16 09:51
楼主好像是判断输入字符串是否为纯数字(digit),而不是判断是否为合法的数(number)。

-2, 0x3c, 3.14, ...

他是要通过用户输入的数字参与下一步判断数字大小是否在范围内,比较大下这事儿,要求变量是数字。

点评

嗯,可能是我理解错了吧。  详情 回复 发表于 2018-6-16 10:55

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5

查看全部评分

回复

使用道具 举报

59#
发表于 2018-6-16 10:54:04 | 只看该作者
527104427 发表于 2018-6-16 10:06
好多年不见了,老兄还是一如既往地严谨啊!

呵呵,N久不逛论坛了,昨天想下载一个工具,就登陆了,顺便就回了一贴。

无忧还是老样子,向无忧的新老朋友问声好!
回复

使用道具 举报

60#
发表于 2018-6-16 10:55:19 | 只看该作者
dos时代菜鸟 发表于 2018-6-16 10:07
他是要通过用户输入的数字参与下一步判断数字大小是否在范围内,比较大下这事儿,要求变量是数字。

嗯,可能是我理解错了吧。

点评

如果选项有1-10,那么除了1、2、3、4、5、6、7、8、9、10之外的都不合法,我需要这么判断。  详情 回复 发表于 2018-6-16 23:26
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 16:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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