yuanyong911 发表于 2018-3-22 16:25:21

如何让GHOST批处理 识别UEFI GPT格式分区

如何让GHOST批处理 识别UEFI GPT格式分区
我之前使用MBR分区使用以下命令 可以生成 相应 结果

@echo off
set xtpf=%systemdrive%
rem 制作系统备份文件
for /f "skip=2 tokens=1,2" %%i in ('dsptw /a /pdr /y') do echo %%i %%j>>.\AAA.txt
for /f "tokens=1,2" %%i in ('type .\AAA.txt^|find /i "%xtpf%"') do set c=%%j
for /f "tokens=1,2" %%i in ('type .\AAA.txt^|find /i "d:"') do set d=%%j
echo d:\GHOST32.exe -CLONE,MODE=PDUMP,SRC=%c%,DST=%d%\Win10.GHO -AUTONAME -sure -fro -quiet>.\AAA.txt

生成的结果
d:\GHOST32.exe -CLONE,MODE=PDUMP,SRC=1:1,DST=1:2\Win10.GHO -AUTONAME -sure -fro -quiet

但现在 是 UEFI GPT 分区 生成不了 那个最重要是 磁盘 代号了
d:\GHOST32.exe -CLONE,MODE=PDUMP,SRC=,DST=\Win10.GHO -AUTONAME -sure -fro -quiet

求高手帮我看看!我是不是需要 更新我的 dsptw.exe 文件了。有没有新的程序可以支持命令行 自动生成 磁盘代号的。多谢。


令狐大虾 发表于 2018-3-28 16:47:10

yuanyong911 发表于 2018-3-28 16:10
谢谢哥们,我硬盘 win10 的所在盘符 即便确认了,但返回给我的都是 C D E 这样的,我是想 把返回的 英文 ...

命令行下的ghost识别GPT分区会出错。例如你想识别C盘,而Ghost识别的却是第一个隐藏区ESP。所以你那个1:1之类的参数没有意义。

令狐大虾 发表于 2018-3-25 15:57:25

本帖最后由 令狐大虾 于 2018-3-25 16:07 编辑

卧槽,回复的几页都不见了哈哈。ghost.exe并不能象dism.exe那么智能识别c盘。它的识别就是磁盘+分区。由于主板芯片组的不同,upe启动下有时候会把单个磁盘识别为二盘。那么就需要在调用过程中出错即停止ghost.exe然后再执行另一个命令。作为备份模式没啥。如果是双硬盘恢复出错那就纳闷了。

fuldho 发表于 2018-3-22 20:04:29

dsptw.exe没发现新版本,

使用mountvol.exe m: /S+GHOST32.exe -dd

江南一根葱 发表于 2018-3-28 14:18:33

gpt下我用的ghost还原到盘符是可以的,到时强制识别一个大分区算了

令狐大虾 发表于 2018-3-23 23:30:51

本帖最后由 令狐大虾 于 2018-3-23 23:38 编辑

                                 ;判断系统启动区是MBR磁盘还是GPT磁盘
                                          If FileExists(@TempDir & '\disk\') = 0 Then _FileCreate(@TempDir & '\disk\')
                                                                                                $file = _FileCreate(@TempDir & '\disk\list.txt')
                                                                        $file1 = FileOpen($file, 1)
                                                                        FileWrite(@TempDir & '\disk\list.txt', 'list disk')
                                                                        _RunDos('cmd.exe /c diskpart.exe /s ' & @TempDir & '\disk\list.txt >'& @TempDir & '\disk\123.txt')
                                                                        Local $aArray = FileReadToArray(@TempDir & "\disk\123.txt")
                                                                                                Local $asd = _ArrayFindAll($aArray, '磁盘 0', Default, Default, 1, 1, 2)
                                                                        $ss = StringStripWS($aArray[$asd], 8)
                                                                    Local $sss = StringRight($ss, 1)
                                                                    If $sss == '*'Then
                                                                            _RunDos('cmd.exe /c bcdboot c:\windows /l zh-cn') ;==>确定C盘是GPT磁盘并将EFI启动文件夹写入活动区ESP盘      
                                                                    Else
                                                                            _RunDos('cmd.exe /c bcdboot c:\windows /l zh-cn /s c:') ;==>确定C盘是MBR磁盘并将EFI启动文件夹写入活动区C盘,若MBR PE启动则将Boot启动文件夹写入活动区C盘
                                                                                                If FileExists('C:\EFI') Then FileSetAttrib('C:\EFI','+RSH')                                             
                                                                    EndIf
这是我当时编写多合一安装器(自用)在AU3论坛发求助某个坛友给我的代码。修改了一下。我当时的想法是无视C盘是否是mbr还是gpt,都可以在Win10下UEFI启动(几台实体机测试可以无视分区格式纯UEFI启动,不支持Win7)。
不过楼主是ghost,不管C盘是否GPT,写入一个命令bcdboot c:\windows /l zh-cn就可以了啊。

yuanyong911 发表于 2018-3-22 20:33:41

fuldho 发表于 2018-3-22 20:04
dsptw.exe没发现新版本,

使用mountvol.exe m: /S+GHOST32.exe -dd

多谢 高手 我周末试试!

yuanyong911 发表于 2018-3-22 20:45:49

fuldho 发表于 2018-3-22 20:04
dsptw.exe没发现新版本,

使用mountvol.exe m: /S+GHOST32.exe -dd

恕我无知 还烦请您 帮我看看
mountvol.exe m:/S + GHOST32.exe -dd
好像不能达到 相应效果

我想实现 通过 批处理 自动填写 下面 红色部分。如果您方便 麻烦您再受累帮我看看!万分感谢!

d:\GHOST32.exe -CLONE,MODE=PDUMP,SRC=1:1,DST=1:2\Win10.GHO -AUTONAME -sure -fro -quiet


===========================================

studyggm 发表于 2018-3-22 21:00:33

关注起来

窄口牛 发表于 2018-3-22 21:44:44

千万不要这么做,太危险了。

688022 发表于 2018-3-23 09:13:39

路过学习

yuanyong911 发表于 2018-3-25 14:37:12

令狐大虾 发表于 2018-3-23 23:30
这是我当时编写多合一安装器(自用)在AU3论坛发求助某个坛友给我的代码。修改了一下。我当时的想法是无视C ...

谢谢兄弟!估计刚才这个论坛被刷屏了!

令狐大虾 发表于 2018-3-25 19:56:46

经过测试,GPT模式硬盘,ghost命令行无法识别磁盘第一分区C(其实它认为磁盘第一分区就是隐藏区ESP)。这也是几年前MAXDSO说出品支持UEFI备份的工具发布一直没有下文

yuanyong911 发表于 2018-3-28 08:52:50

令狐大虾 发表于 2018-3-25 15:57
卧槽,回复的几页都不见了哈哈。ghost.exe并不能象dism.exe那么智能识别c盘。它的识别就是磁盘+分区。由于 ...

多谢 兄弟!我这两天实在太忙!一会我看看!真是非常感谢!之前的几页有可能是服务器重置了!

yuanyong911 发表于 2018-3-28 09:38:50

令狐大虾 发表于 2018-3-25 19:56
经过测试,GPT模式硬盘,ghost命令行无法识别磁盘第一分区C(其实它认为磁盘第一分区就是隐藏区ESP)。这也 ...

哦 明白了!我的思路是 通过在安装硬盘上的win10 系统中 某个特殊文件标记,告诉 我PE win10 这是 C盘,通过在PE系统下找寻 那个特定文件 定位到 ,硬盘 win10 的所在盘符 但一般返回给我的都是 C D E 这样的,我是想 把返回的 英文盘符 通过 批处理 转换为 1:1   1:21:3这样的 以便ghost 识别!不知您有没有好的 办法!真是给您添了麻烦!谢谢!

令狐大虾 发表于 2018-3-28 13:59:20

楼主需要注意的是你所有的命令在PE下面只是适合单硬盘运行。10PE下多硬盘会盘符交错,特别是存在NVME+HDD(因为在10PE下SATA接口优先显示为磁盘0)。对于备份而言,你所说的那个标记文件可以为C:\bootmgr

yuanyong911 发表于 2018-3-28 16:10:06

令狐大虾 发表于 2018-3-28 13:59
楼主需要注意的是你所有的命令在PE下面只是适合单硬盘运行。10PE下多硬盘会盘符交错,特别是存在NVME+HDD( ...

谢谢哥们,我硬盘 win10 的所在盘符 即便确认了,但返回给我的都是 C D E 这样的,我是想 把返回的 英文盘符 通过 批处理 命令 转换为 1:1   1:2  1:3  这样的 以便ghost 识别!有没有C D E 英文盘符 转换为 GHOST所需的 数字 盘符(1:1   1:2)的 批处理工具呢??谢谢您!

yuanyong911 发表于 2018-3-31 09:24:48

令狐大虾 发表于 2018-3-28 16:47
命令行下的ghost识别GPT分区会出错。例如你想识别C盘,而Ghost识别的却是第一个隐藏区ESP。所以你那个1:1 ...

多谢您!我研究研究!

szwp 发表于 2018-4-20 13:06:40

既然用GHOST,可以考虑下同一家的GDISK

bjay2008xmy 发表于 2020-9-18 23:07:36

yuanyong911 发表于 2018-3-28 09:38
哦 明白了!我的思路是 通过在安装硬盘上的win10 系统中 某个特殊文件标记,告诉 我PE win10 这是 C盘, ...

@echo off
for %%i in (C D E F G H I JK L M N O P Q R S T) DO (
if exist %%i:\windows\system32\cmd.exe (echo %%i是系统盘)
)
使用此批处理文件,查找C D E F G H I JK L M N O P Q R S T 这些分区下是否 有\windows\system32\cmd.exe,存在此路径和这个文件的分区应当可以判断成系统分区,此时系统分区的盘符已经传递到%%i

FoxHu 发表于 2020-9-25 12:20:00

用diskpart分好区了,再Ghost,ghost最好只做分区恢复,不要做整盘恢复。
页: [1]
查看完整版本: 如何让GHOST批处理 识别UEFI GPT格式分区