无忧启动论坛

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

再次请教个批处理问题

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-22 21:03:51 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
有啥命令可以建立目录时不要指定盘符,就像GHOST时,可以这样指定第一硬盘的第二个分区dst=1:2

因为发现用指定的盘符建立目录,在WINDOWS或VISTA系统是正常的,但如果在PE系统下,有时会发现盘符错乱,

而导致备份或还原出错,比如WINDOWS系统的D盘,在PE系统有可能为F或E盘,这样偶直接指定D盘的Gho~1目录,就会

找不到盘符而备份或还原出错,出错这种的情况大多数是品牌机

请大家帮帮忙看有没有比较好的解决方法
2#
 楼主| 发表于 2008-6-22 22:16:08 | 显示全部楼层
有啥好方法解决不??
回复

使用道具 举报

3#
 楼主| 发表于 2008-6-22 23:22:09 | 显示全部楼层
具体GHOST的命令如何编写,偶建立的目录gho.(畸形目录)(因为这能防止删除)
麻烦你详细写个代码,谢谢了
上次那个备份的代码相信你也知道了,就是要按那个弄的
回复

使用道具 举报

4#
 楼主| 发表于 2008-6-23 00:19:44 | 显示全部楼层
偶试试看,能不能把备份和还原分成两个批理处,不想在一个批处理文件内执行备份和还原

还有备份也应该加入检测是否有备份过了,也就是要检查sys.gho文件是否存在
回复

使用道具 举报

5#
 楼主| 发表于 2008-6-23 00:36:01 | 显示全部楼层
偶测试可以了,剩下的就是要添加备份检测文件有存在否和弄成两个批处理文件的问题

这个偶自己慢慢弄了,如果不行再麻烦你了,你真的是一个热心人,好人,这么晚还帮在偶解决
问题,真的是很感谢

最后明天在到那些有问题的机子上再测试下
回复

使用道具 举报

6#
 楼主| 发表于 2008-6-23 00:37:50 | 显示全部楼层
汗。。。你回复真快,偶才发回帖了

偶有学过啊,其实你弄的这些代码偶基本是看得懂的,就是有一些复杂的命令不会弄
回复

使用道具 举报

7#
 楼主| 发表于 2008-6-23 01:46:56 | 显示全部楼层
呵呵,你这样还算简单啊,太谦虚了

这是偶修改完的代码,看需要再改进没,偶测试是可以的,就是以下这段代码启作用:

set allDrive=c d e f g h i j k l m n o p q r s t u v w
for %%i in (%allDrive%) do if exist %%i:\gho~1 set f=%%i
if exist %f%: set gfile=%f%:\gho~1


以下是备份文件的批处理代码:

@echo off
CLS
rem 一键备份C盘
:: 检测安装时所建立目录的位置
set allDrive=c d e f g h i j k l m n o p q r s t u v w
for %%i in (%allDrive%) do if exist %%i:\gho~1 set f=%%i
if exist %f%: set gfile=%f%:\gho~1
echo.
echo.
echo.
echo                         一键备份C盘  By:yigeren
echo.
echo.
echo                提示: 一旦"备份",立即执行,备份文件将保存在D盘!
echo.
echo                提示: 按"B"键,再按回车键,开始备份, 按"Q"键退出.
echo.
echo.
echo.
echo.
echo.
Set Choice=
Set /P Choice= 请选择备份或退出:
If "%Choice%"=="" Goto Call
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="B" Goto backup
If /I "%Choice%"=="Q" Exit
call backup.cmd
:backup
:: 文件检测
if exist %gfile%\yigeren.sys (
Cls
echo.
echo.
echo.
color 0c
echo                         系统已经备份过了&goto bakset
) else (
md d:\gho..\
cls
ghost32.exe -clone,mode=pdump,src=1:1,dst="%gfile%\yigeren.sys" -z3 -fx -sure
goto end
)
:Call
call backup.cmd
goto end

:bakset
echo.
echo.
echo                警告: 一旦"备份",立即执行,原有备份文件将被覆盖!
echo.
echo                重新备份系统请按"Y"键,再按回车键,退出请按"Q"键
echo.
echo.
echo.
Set b=
Set /P b= 请选择重新备份或退出:
if %b%#==# goto bakset
if /i %b%==Y goto reset
if /i %b%==Q goto end
cls
echo.
echo.
echo.
echo                         系统已经备份过了
goto bakset
goto end

:reset
cls
ghost32.exe -clone,mode=pdump,src=1:1,dst="%gfile%\yigeren.sys" -z3 -fx -sure
goto end
:end
回复

使用道具 举报

8#
 楼主| 发表于 2008-6-23 01:47:34 | 显示全部楼层
这个是还原文件的批处理代码:

@echo off
CLS
rem 一键恢复C盘
set allDrive=c d e f g h i j k l m n o p q r s t u v w
for %%i in (%allDrive%) do if exist %%i:\gho~1 set f=%%i
if exist %f%: set gfile=%f%:\gho~1
echo.
echo.
echo.
echo                         一键恢复C盘  By:yigeren
echo.
echo.
echo                警告: 一旦"恢复",立即执行,C盘数据将全部被覆盖!
echo.
echo                提示: 按"R"键,再按回车键,开始恢复, 按"Q"键退出.
echo.
echo.
echo.
echo.
echo.
Set Choice=
Set /P Choice= 请选择恢复或退出:
If "%Choice%"=="" Goto Call
If Not "%Choice%"=="" Set Choice=%Choice:~0,1%
If /I "%Choice%"=="R" Goto restore
If /I "%Choice%"=="Q" Exit
call restore.cmd
:restore
cls
ghost32.exe -clone,mode=pload,src="%gfile%\yigeren.sys:1",dst=1:1 -fx -sure
goto end
:Call
call restore.cmd
goto end
:end
回复

使用道具 举报

9#
 楼主| 发表于 2008-6-23 14:39:57 | 显示全部楼层
奇怪,在备份好后,然后再还原,再运行备份批处理文件系统就会蓝屏
回复

使用道具 举报

10#
 楼主| 发表于 2008-6-24 00:41:26 | 显示全部楼层
备份的你说建立文件夹,是这个代码吗:md d:\gho..\     
我已经删除了

还原的是没加入检测机制,可以添加检测下如果找不到yigeren.sys,就提示系统没备份过。
回复

使用道具 举报

11#
 楼主| 发表于 2008-6-24 01:27:48 | 显示全部楼层
还原的批处理需要改改了,如果有两个硬盘或像你所说的,用U盘启动后,把U盘识别成第一硬盘,那还原后,会把数据弄丢的,那可就惨了,我想是不是让它还原到指定的C盘,而不管它在第几硬盘的第几分区上,不过现在出现的蓝屏是哪出的问题?

[ 本帖最后由 yigeren 于 2008-6-24 10:07 AM 编辑 ]
回复

使用道具 举报

12#
 楼主| 发表于 2008-6-24 12:31:31 | 显示全部楼层
我做的测试都在PE系统下测试,我用以前的简单批处理备份和还原,都不会出现蓝屏,但只要换成现在弄的这个,就会蓝屏,昨天已有反复测试过,在虚拟机上测试过,实机上也测试过
有时先备份再还原,再运行备份文件,就蓝屏,有时先运行还原,再备份,再运行还原,还是蓝屏
回复

使用道具 举报

13#
 楼主| 发表于 2008-6-24 13:13:10 | 显示全部楼层
少了CHeckUSB.exe文件
回复

使用道具 举报

14#
 楼主| 发表于 2008-6-24 13:32:26 | 显示全部楼层
汗。。。还是出错,到这句提示出错了:set hp=%c:~0,1%:1
提示:此时不应有 1c:~-1
回复

使用道具 举报

15#
 楼主| 发表于 2008-6-24 13:53:22 | 显示全部楼层
我用的是11.5的版本,GHSTSTAT.TXT有自动建立


晕,换了GHOST11.02版本才行,可运行后就直接恢复了,没显示选择菜单

[ 本帖最后由 yigeren 于 2008-6-24 01:59 PM 编辑 ]
回复

使用道具 举报

16#
 楼主| 发表于 2008-6-24 14:22:20 | 显示全部楼层
不是,需要一个交互过程,就是要还原前,要确定下,不然有时按错了,那就不好了

你不是还要添加一个检查U盘的
回复

使用道具 举报

17#
 楼主| 发表于 2008-6-24 14:39:29 | 显示全部楼层
不是这个意思,就是在批处理检测好正确恢复哪个盘前,需要操作者按Y键确认还原
而不是要显示那些菜单供用户选择,这样的选择菜单,对不懂电脑的人来说,根本不知道选择哪个,我们需要的只是让他们再确定下是否还原而已,而不需要让他们要选择恢复到哪

就像前面我那个还原文件一样,确认还原就按Y键,再按回车键,不还原按Q键退出,其它的不需要他们选择,那些他们根本看不懂


那个GHOST11.02貌似能恢复GHOST11.5备份的映像

[ 本帖最后由 yigeren 于 2008-6-24 02:43 PM 编辑 ]
回复

使用道具 举报

18#
 楼主| 发表于 2008-6-24 14:59:27 | 显示全部楼层
好的,我试试修改下,不行再请教你

这个备份还原批处理我是要用在PE系统上的
回复

使用道具 举报

19#
 楼主| 发表于 2008-6-24 16:25:50 | 显示全部楼层
我改成这样,你帮我再看看有啥问题没

还有GHOST11.02是可以恢复GHOST11.5的映像,已测试过
RfHD.rar (1.77 KB, 下载次数: 89)
回复

使用道具 举报

20#
 楼主| 发表于 2008-6-24 18:52:31 | 显示全部楼层
怎么自动识别那些盘符出来和备份文件显示的时间

显示盘符出来比较直观

[ 本帖最后由 yigeren 于 2008-6-24 07:00 PM 编辑 ]
回复

使用道具 举报

21#
 楼主| 发表于 2008-6-24 20:04:23 | 显示全部楼层
谢谢了哈,偶再研究研究
GHSTSTAT.TXT^|find /i ": 这里是要查找的对象:
上面这个是要查GHSTSTAT.TXT文件里面的啥内容,如何把它表现出来
回复

使用道具 举报

22#
 楼主| 发表于 2008-6-25 02:38:49 | 显示全部楼层
这是我重新修改好的备份还原批处理,你再看看

发现有这样的问题,如果有两个硬盘,把畸形目录建立第2硬盘上,那在PE系统下,会把畸形目录所在的硬盘当第一硬盘来处理
也就是这个参数%hp%显示为1:1,但在Windows系统下则没有此问题,

今晚弄了一晚上了,一直在测试,好累!!!好象还有问题,忘了是啥,汗.......但主要是出在多硬盘上的问题,单硬盘的情况下,应该OK了

PS:因我的电脑刚好有两块硬盘,一个IDE和SATA,SATA硬盘是属于第2硬盘,系统装在SATA硬盘上

睡觉

cmd.rar (1.98 KB, 下载次数: 79)
回复

使用道具 举报

23#
 楼主| 发表于 2008-6-25 16:10:21 | 显示全部楼层
晕,有人下载没人反应..........
回复

使用道具 举报

24#
 楼主| 发表于 2008-6-25 17:39:30 | 显示全部楼层
1.备份批处理的畸形目录,我用自解压软件建立,因为这样才能把畸形目录隐藏(在解压时运行建立畸形目录的代码,设定建立在D盘)

2.你说的还原文件大小写问题是这个代码吧:if  %ps%==A goto RtHPone   (已修正)
而这个:提示:C盘在第%c:~0,1%硬盘的位置(要如何准确定位)

3.D盘的畸形目录就是第一硬盘位置(我的电脑)

4.弄个简单的备份还原批处理,发现越弄越难,要牵涉考虑的问题还真多,毕竟自己对DOS命令不熟,只会些简单的命令操作,汗..........
回复

使用道具 举报

25#
 楼主| 发表于 2008-6-25 19:54:52 | 显示全部楼层
这个备份还原批处理是在PE环境下使用的,而安装PE系统的前提是在WINDOWS系统下操作的,所以不存在你所说的:C盘是U盘,D盘是第一硬盘第一分区,E盘是第一硬盘第二分区的情况,
不然就会在备份批处理里面添加建立畸形目录的代码了(也因为发现不能在PE系统下隐藏畸形目录,所以才这样做)
C盘定位,我是这样查的,在两个硬盘下,盘符是这样:第一硬盘:D盘,G盘,H盘
第二硬盘:C盘(系统盘),E盘,F盘
在PE系统下,如果两个硬盘都连接上,用GHOST备份还原工具查找显示的是这样:
D: 1:1
G: 1:2
H: 1:3
C: 2:1
E: 2:2
F: 2:3
然后用你提供的代码:%hp%测试下显示是什么,在两个硬盘情况下它显示为2:1
而2:1就是上面的C: 2:1所以确定为C盘在第2硬盘上,在一个硬盘情况下,%hp%显示为1:1,当然就是在第1硬盘上了(只有一个硬盘应该是不会出错的),不知道我这样测试是否合理,还有你再帮我把代码完善下吧
回复

使用道具 举报

26#
 楼主| 发表于 2008-6-26 00:11:17 | 显示全部楼层
因为这个PE系统主要是给不大懂电脑的人用,如果系统不能启动,那就需要我们来维护了
而我们当然知道如何操作了,所以这个问题应该不大,关于第2点偶再研究看看,不行就只能先这样了,再次谢谢你哈

PS:现在有一个构想,就是把PE系统文件也放在D盘或E盘的畸形目录里,这样可最大程度防止误删文件(也就保证系统损坏也可进入PE系统),
然后在添加一个批处理文件来检查XP系统的boot.ini文件是否存在,或boot.ini里面的内容有引导PE的信息没,如果发现BOOT文件不存在或里面的内容没有引导PE系统的信息,就从预先备份的文件还原到C盘,Vista系统的引导比较不容易破坏,所以可不用检查,不知道方法可行不

PS2:不想用那些隐藏分区或修改MBR的方法

[ 本帖最后由 yigeren 于 2008-6-26 01:26 AM 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-10 05:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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