无忧启动论坛

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

写了好几天的批处理文档,眼睛都看近视了,这会应该没错了吧(已解决)

  [复制链接]
31#
发表于 2021-6-11 08:48:21 来自手机 | 只看该作者
之前建议楼主用vscode写脚本,楼主好像没有采用,即使用记事本,那也建议使用缩放,增加代码可读性。记事本建议采用Tab缩放,更简单。另外,建议楼主规范发帖,使用代码包含代码部分,增加帖子可读性。

点评

感谢建议,我也下载了使用,界面很友好,语法高亮显示。主要是不能在上面调试,而我自身对批处理也不是很擅长,有时候就是想做个方案解决某个问题才写的批处理,需要经常运行检查才能发现错误,然后再修改。 至于我  详情 回复 发表于 2021-6-11 15:00
我都是用 notepad 3 ,简单能应付需求。  详情 回复 发表于 2021-6-11 08:52
回复

使用道具 举报

32#
发表于 2021-6-11 08:52:07 | 只看该作者
nttwqz 发表于 2021-6-11 08:48
之前建议楼主用vscode写脚本,楼主好像没有采用,即使用记事本,那也建议使用缩放,增加代码可读性。记事本 ...

我都是用 notepad 3 ,简单能应付需求。

点评

自从偶然间用了vscode,就再也没有用过notepad++、notepad2、notepad3、emeditor之类的代码编辑器,vscode虽然设置一堆,但是你可以不改  详情 回复 发表于 2021-6-11 10:34
回复

使用道具 举报

33#
发表于 2021-6-11 09:02:08 | 只看该作者
批处理虽然没有 面向对象 的概念,但是 ,可以参考 创建 模块和函数的概念,用 call + exit /b ,创建模块函数。
用变量做 模块或函数结果返回值。
脚本设计思路是,统一做好前期信息搜集,再最后完成 核心指令。
回复

使用道具 举报

34#
发表于 2021-6-11 09:29:14 | 只看该作者
建议在for语句列表的时候尽量将共同的内容抽走以达成简化的目的

如:
将for %%j in (D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: Y: Z: C:)
改为for %%j in (D E F G H I J K L M N O P Q R S T U V W Y Z C)
原来引用%%j的地方改为%%j:

for %%k in (systembak.gho systembak.wim systembak.esd)
改为for %%k in (gho wim esd)
原来引用%%k的地方改为systembak.%%k

还要理解代码的本意,才能符合自己的意愿,如
for %%h in (C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: Y: Z:) do (
if not exist %%h\windows\system32\cmd.exe (
这代码的意思本来就是由C至Z逐一查找cmd.exe,一找不到就提示出错,当然与楼主意愿不符,所以才会出22楼那样的问题

点评

学习了  详情 回复 发表于 2021-6-11 10:44
回复

使用道具 举报

35#
发表于 2021-6-11 10:34:35 来自手机 | 只看该作者
dos时代菜鸟 发表于 2021-6-11 08:52
我都是用 notepad 3 ,简单能应付需求。

自从偶然间用了vscode,就再也没有用过notepad++、notepad2、notepad3、emeditor之类的代码编辑器,vscode虽然设置一堆,但是你可以不改

点评

好的,我也试试。  详情 回复 发表于 2021-6-11 11:13
回复

使用道具 举报

36#
 楼主| 发表于 2021-6-11 10:44:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

37#
发表于 2021-6-11 11:13:15 | 只看该作者
nttwqz 发表于 2021-6-11 10:34
自从偶然间用了vscode,就再也没有用过notepad++、notepad2、notepad3、emeditor之类的代码编辑器,vscod ...

好的,我也试试。
回复

使用道具 举报

38#
 楼主| 发表于 2021-6-11 11:24:53 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

39#
 楼主| 发表于 2021-6-11 11:33:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

40#
发表于 2021-6-11 11:35:59 | 只看该作者
bjay2008xmy 发表于 2021-6-11 11:24
有使用条件的,所以我设置了找不到系统分区和系统映像时就按任意键关机,在多系统和多映像的情况下,只会 ...

你在使用for循环,所以建议选择找到的最后一个系统盘和最后一个映像
同于系统盘多数是C盘,所以找系统盘时倒序排列 Z Y X ... D C 这样最后一个就是C

点评

感谢你提供的 if %xtp%a==a 代码,很实用。 我想问一下,倒序查找的用意是什么呢?  详情 回复 发表于 2021-6-12 00:20
回复

使用道具 举报

41#
发表于 2021-6-11 12:29:55 | 只看该作者
bjay2008xmy 发表于 2021-6-11 11:33
这个用途可能比较小众化,是用来辅助对电脑不熟悉的人群恢复系统的,其目标在于:系统出问题时,只要插入 ...

想法是好的,
但是 如果是 gpt 分区结构带 esp 引导分区的,你改咋处理?esp 分区中的引导可能也损坏了。

你需要 找出 硬盘中负责引导 系统 的分区,有时 即便是 mbr 结构,引导分区与 windows 分区也可能不一样。

不考虑分区结构和类型的 还原操作,失败概率很大。

这个批处理是围绕 文件级别 开展的搜索,而 ghost 是对系统分区开展还原操作。 这样就差了一个级别,不对等,失败概率增加。





点评

我原来做的那个方案需要使用者根据情况手动编写命令,用分区号指定系统分区和系统映像路径和映像名,可靠一点。但是我觉得对使用的人来说配置就复杂了很多。尤其是使用CGI的话,还需要阅读CGI的配置文档才能写出CGI.  详情 回复 发表于 2021-6-11 14:52
我整个方案是在PE中内置了GHOST64.exe和CGI.EXE,分别写有对应的批处理。 搭配PECMD在PE启动后把U盘盘符设定为U:,为了方便修改调用了U盘上的一个批处理,只要修改那个批处理就可以了。 甚至用户连CGI.INI都不用写  详情 回复 发表于 2021-6-11 14:32
回复

使用道具 举报

42#
发表于 2021-6-11 12:58:39 来自手机 | 只看该作者
bjay2008xmy 发表于 2021-6-11 11:33
这个用途可能比较小众化,是用来辅助对电脑不熟悉的人群恢复系统的,其目标在于:系统出问题时,只要插入 ...

这么说肯定也要涉及数据备份恢复部分,IP备份等

点评

其实说简单了也就是查找系统盘和系统映像后自动恢复,没有复杂的东西。主要是要想做的完善,就要对更多可能出现的情况判断处理  详情 回复 发表于 2021-6-11 15:07
回复

使用道具 举报

43#
 楼主| 发表于 2021-6-11 14:32:06 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

44#
 楼主| 发表于 2021-6-11 14:52:41 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

45#
 楼主| 发表于 2021-6-11 15:00:08 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

46#
 楼主| 发表于 2021-6-11 15:07:04 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

47#
发表于 2021-6-11 15:16:07 | 只看该作者
本帖最后由 captain_g 于 2021-6-11 15:18 编辑
bjay2008xmy 发表于 2021-6-11 11:33
这个用途可能比较小众化,是用来辅助对电脑不熟悉的人群恢复系统的,其目标在于:系统出问题时,只要插入 ...

“用来辅助对电脑不熟悉的人群恢复系统”?

既然是这个目的,还要“自动恢复”,那程序就因该有广泛的适应性,同时还必须采取措施,防止发生灾难性后果!

“设置了找不到系统分区和系统映像时就按任意键关机”,这种情况尤其是恢复系统,应该不多见,既然东西是基于PE的,这种情况应该留在PE,用户可以选择人工操作;

“在多系统和多映像的情况下,只会选择找到的第一个系统盘和第一个映像”,这个有严重缺陷!

为何肯定“第一个系统盘”与“第一个映像”就正是所需的而且两者是匹配的?

楼主搞这个,似乎思路主要是以自己熟悉的情形为前提,既然都有很多先决条件,那就无需搞得如此复杂;

对于特定已知静态的环境,搞这种自动有可行性;

如果要发布出去,就必须非常谨慎,建议必须设置哪怕最少一次人工干预,防止发生灾难性后果或徒劳无功,因为用GHO恢复就必须毁掉原有数据,用WIM或ESD通常须先行格式化。

点评

现在我又想,既然我都做出来了,就把变得更完善一点。 因为之前我做的方案要手动编写批处理命令或者CGI.INI配置文件,使用分区号去指定系统分区和系统映像路径、路径名,需要去阅读CGI配置指南,增加了使用的难度  详情 回复 发表于 2021-6-11 15:48
其实还有其他因素让我认为这个方案可行值得去完善。 在去年的9月份我就做过U盘自动恢复系统这个方案,之前看我们论坛一个网友说想让父母也能轻松给家里的电脑重装系统,那时候我就心血来潮,想着没事就做一下这个  详情 回复 发表于 2021-6-11 15:41
回复

使用道具 举报

48#
 楼主| 发表于 2021-6-11 15:41:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

49#
 楼主| 发表于 2021-6-11 15:48:04 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

50#
发表于 2021-6-11 16:01:44 | 只看该作者
bjay2008xmy 发表于 2021-6-11 15:41
其实还有其他因素让我认为这个方案可行值得去完善。

在去年的9月份我就做过U盘自动恢复系统这个方案, ...

你说的这种情形,我以前的做法是固定备份到D盘gho文件,开机时可按键选择一键还原。

后来时代发展了,我就改成固定备份到D盘wim文件,开机时可按键选择进入pe,pe桌面放一键还原。

现在如果可以的话,我会改用差分vhd,保留一个原版,复制两个副本,运行其中一个副本,桌面有一键还原,其实这时的一键还原就是将原版重新复制到副本,重启后运行复制成功的副本。

点评

大佬也做过类似的方案吗 以前使用硬盘MBR分区表,确实有许多可用的一键恢复方案,比如MAXDOS以前我就经常用。  详情 回复 发表于 2021-6-11 16:19
回复

使用道具 举报

51#
 楼主| 发表于 2021-6-11 16:19:35 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

52#
 楼主| 发表于 2021-6-11 16:26:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

53#
 楼主| 发表于 2021-6-11 22:07:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

54#
发表于 2021-6-11 22:12:45 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-6-11 22:15 编辑

这个功能,我用 dos 启动,做过光盘版的。 对应的是 mbr 分区 xp /win7 x86 系统。
也有 F9 一键还原的方案,把备份做到一个隐藏分区。

我坚持了8年的 dos工具箱,当时集成了 大约 30M 的dos 工具,用来做系统维护。

不过现在看来都过时了。进入 win pe 时代,再往后 要进入网络 云时代 和 物联网系统 时代,win pe 总有一天也会过时的。

现在 曾经的 dos版块 ,不也,变成 脚本讨论区了么。

谁也挡不住历史发展的车轮滚滚向前呀



点评

当然我主要是在别人现有的方案去修改或者把一些零星的方案组合起来做成一个完整的东西  详情 回复 发表于 2021-6-11 23:21
在各种程序语言中,我用的最多的就是批处理。除了这个,我还做过网启TinyPXE P2P安装WINDOWS系统、网启TinyPXE之CGI安装WINDOWS系统,方案偏向于自动化的,都是由批处理实现的。  详情 回复 发表于 2021-6-11 23:16
回复

使用道具 举报

55#
 楼主| 发表于 2021-6-11 23:16:53 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

56#
 楼主| 发表于 2021-6-11 23:21:06 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

57#
 楼主| 发表于 2021-6-12 00:07:54 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

58#
 楼主| 发表于 2021-6-12 00:20:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

59#
发表于 2021-6-12 02:24:05 | 只看该作者
本帖最后由 hilsonma 于 2021-6-12 02:26 编辑
bjay2008xmy 发表于 2021-6-12 00:20
感谢你提供的
if %xtp%a==a
代码,很实用。

假设有多个操作系统分区 C D E
Z Y X ... D C 这样最后一个就是C
C D E ... X Y Z 这样最后一个就是 E
我们要使for走完的话取的就是最后一个

当然复杂一些的话也可以将所有找到的存起来,再作进一步安排。
回复

使用道具 举报

60#
发表于 2021-6-12 06:38:17 来自手机 | 只看该作者
本帖最后由 dos时代菜鸟 于 2021-6-12 08:50 编辑
bjay2008xmy 发表于 2021-6-12 00:07
刚才我下载了你这个软件运行了一下,发现了一个问题。不知道你有没有意识到ghost某个版本之前识别的GPT硬 ...

管他咋定义的,那无非就是个分区的特定名称 ,只要能用这个名称完成任务就行呗。

gpt 分区,通常有 efi 分区 和 msr 分区,这两份分区 通常在 系统分区前,自然 系统分区就 被识别为 1.3 了,这个也属正常。

只要 omnifs 和 ghost 都 能使用同样的 分区识别体系,omnifs 识别出的分区标识 ghost 能用,就行呗。


点评

我在PE中内置的GHOST和CGI都是识别MSR分区的,所以你这个软件是不能通用的  详情 回复 发表于 2021-6-12 10:32
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-24 21:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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