无忧启动论坛

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

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

  [复制链接]
1#
发表于 2021-6-10 21:59:11 | 显示全部楼层
很久没用 ghost 了
其实 ghost 套系中有两个工具
gdisk 用来分区
omnifs 用来查找和操作分区中的文件

分区不一定要有盘符,只要 用 ghost 可识别的 1:2 2:1 之类的表示即可。

所以,我建议用 omnifs 获取分区信息并确定 存在指定文件的 分区,并确定 要回复的分区。
然后的事情就交给 ghost 办理了。

之前 这类操作都是 在 dos 下完成的。
自从有了 wim 打包方式 和 查分vhd 的概念,我很少用 ghost 来回复和安装系统了。

点评

我觉得对我来说,它们都只是一个工具,用哪个不重要,只要能做到我想做的事就可以了。 刚才我在PE中去试验了,发现了一个奇怪的问题,想请教一下: 在查找系统分区,未找到就关机 这个功能模块执行后居然提示  详情 回复 发表于 2021-6-10 22:09
回复

使用道具 举报

2#
发表于 2021-6-10 23:01:37 | 显示全部楼层
bjay2008xmy 发表于 2021-6-10 22:09
我觉得对我来说,它们都只是一个工具,用哪个不重要,只要能做到我想做的事就可以了。

刚才我在PE中去 ...

系统分区未被分配盘符或者 系统没有你要找的文件,为啥不直接用 windows 目录来确认呢?

点评

并非存在“系统分区未被分配盘符或者 系统没有你要找的文件”的问题,我单独运行那个模块就可以。 我当前电脑安装的是WIN7,后来我回到WIN7上运行这个批处理,竟然也出现了同样的问题!难道是一个批处理中不能出现  详情 回复 发表于 2021-6-10 23:23
回复

使用道具 举报

3#
发表于 2021-6-10 23:07:20 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-6-10 23:51 编辑

用这个 直接找出 系统分区和 gho 位置
不管 分区是否隐藏,甚至是 linux 分区上的 gho 估计也能识别出来。

在64位 win7 win10 下测试通过


omnifs64_script-2.7z (1.04 MB, 下载次数: 98)

点评

刚才我下载了你这个软件运行了一下,发现了一个问题。不知道你有没有意识到ghost某个版本之前识别的GPT硬盘的C盘是1:2,某个版本之后显示的是1:3 ?  详情 回复 发表于 2021-6-12 00:07
回复

使用道具 举报

4#
发表于 2021-6-10 23:48:26 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-6-10 23:49 编辑
bjay2008xmy 发表于 2021-6-10 23:23
并非存在“系统分区未被分配盘符或者 系统没有你要找的文件”的问题。
我当前电脑安装的是WIN7,后来我 ...

判断逻辑有问题
你是 逐个盘符判断如果 他没有 cmd.exe 就提示 没有系统分区,然后就关机,这样不行,
应该是 发现 cmd.exe 就设置个变量,循环结束后,通过这个变量的值判断是否找到了 windows 所在分区。
可以把这个变量的值设置为 存在cmd.exe 分区的盘符。

我上面 的附件 里面 有脚本,可以实现 找到 系统分区和 gho 位置。
你可以参考下。

点评

我就是要它实现没有找到这个文件就关机的功能,这是一部分。整个批处理文档中,如果没有查找到系统分区或者系统映像就关机。 我做的整个方案叫做:U盘自动化恢复系统 代码如下: @echo off color 27 ECHO 正  详情 回复 发表于 2021-6-10 23:59
回复

使用道具 举报

5#
发表于 2021-6-11 07:09:39 来自手机 | 显示全部楼层
你得循环完了,才能确定所有盘符都没有WINDOWS,
回复

使用道具 举报

6#
发表于 2021-6-11 08:16:11 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-6-11 09:12 编辑



我下面代码!!!!!是可以。。。。
  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. set find1=0
  4. for %%c in (C D E F G H I J K L M N O P Q R S T U V W ) DO (
  5.         IF EXIST %%c:\windows\explorer.exe call :found1 %%c
  6. )

  7. if !find1! equ 0 echo 未找到 windows 分区
  8. pause

  9. goto :eof

  10. :found1
  11. set find1=1
  12. echo 找到 windows 分区 %1:
  13. exit /b
复制代码



下面是按照你的思路,写的。


  1. @echo off
  2. setlocal ENABLEDELAYEDEXPANSION
  3. set gho_file=systembak.gho
  4. set find1=0
  5. set find2=0
  6. for %%c in (C D E F G H I J K L M N O P Q R S T U V W ) DO (
  7.    IF EXIST %%c:\windows\explorer.exe call :found1 %%c
  8.    if exist %%c:\!gho_file! call :found2 %%c
  9. )

  10. if !find1! equ 0 (
  11.    echo 未找到 windows 分区
  12.    call :error1
  13. )
  14. if !find2! equ 0 (
  15.    echo 未找到 GHO 文件
  16.    call :error1
  17. )

  18. ECHO.
  19. ECHO 接下来把!find2!:\systembak.gho恢复到!find1!:
  20. ghost64.exe -clone,mode=pload,src=!find2!:\systembak.gho:1,dst=!find1!: -sure
  21. ECHO 恢复系统已完成,准备关机
  22. wpeutil shutdown

  23. GOTO :EOF

  24. :found1
  25.    set find1=%1
  26.    echo 找到 windows 分区 %1:
  27. exit /b

  28. :found2
  29.    set find2=%1
  30.    echo 找到 GHO 文件 %1:\!gho_file!
  31. exit /b

  32. :error1
  33.    color 48
  34.    echo 按任意键关机
  35.    pause>nul
  36.    wpeutil shutdown
  37. exit /b
复制代码



但是问题是 ,你这个思路,如果 目标电脑 根本没有 windows ,甚至连分区都没有,是个新硬盘呢?
还是 考虑 再通过交互模式手动 选择分区?
如果硬盘上 有多个 windows 或者多个 systembak.gho 又改咋整?是否也要 考虑 交互式 选择?



点评

这个用途可能比较小众化,是用来辅助对电脑不熟悉的人群恢复系统的,其目标在于:系统出问题时,只要插入U盘,让电脑从U盘启动就自动恢复系统。避免让使用者去接触过多专业的复杂的配置。  详情 回复 发表于 2021-6-11 11:33
有使用条件的,所以我设置了找不到系统分区和系统映像时就按任意键关机,在多系统和多映像的情况下,只会选择找到的第一个系统盘和第一个映像。  详情 回复 发表于 2021-6-11 11:24
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

9#
发表于 2021-6-11 11:13:15 | 显示全部楼层
nttwqz 发表于 2021-6-11 10:34
自从偶然间用了vscode,就再也没有用过notepad++、notepad2、notepad3、emeditor之类的代码编辑器,vscod ...

好的,我也试试。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

13#
发表于 2021-6-12 15:11:50 来自手机 | 显示全部楼层
本帖最后由 dos时代菜鸟 于 2021-6-12 17:30 编辑

这个软件是GHOST 自带,有何不能通用?我电脑俩硬盘,MBR GPT分区都有,识别没问题。
OMNIFS 是GHOST 自家软件,不是我自制的。难道OMNIFS 和 GHOST 不一致?不能识别MSR分区?

GHOST能放心用,OMNIFS 就也应该被接纳。

如果涉及版本问题,可以统一一下,都是自家软件,内部代码都是统一一致的。
用GHOST搞系统恢复,为啥要用GHOST的分区标识体系呢?
有的分区没有盘符,却要用到,就要考虑不能依赖WIN的盘符开展操作。因为有时,备份文件是要藏起来的。

当然,这个就是个人理解和使用方向的问题,能达到目的就行啦。


上图,是 omnifs 和 diskpart 探测到分区表 和盘符 的情况。
而ghost 能识别出 esp 分区, 能够体现其盘符,但不能实现esp分区盘符与ghost分区号对应关系,对于 mrs 分区 ghost 和 omnifs 都忽略了。




回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-14 21:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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