中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
<<   [1] [2]  >>   >
作者:
标题: 批处理文件!谁能看懂? 上一主题 | 下一主题
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『楼 主』:  批处理文件!谁能看懂?

从GHOST.IMG中提取的两个批处理文件,制做自已的GHOST光盘,功能:一回从光盘回恢GHOST,二,运行中文分区DISKMAN,可是进入菜单后提示找不找A盘,原因是提取的两个批处理都加载了虚拟软盘A,所以无法正常运行,(我是BOOTEASY制做的)。现在想修改批处理文件,可是不知道从那里下手。修改后的功能是直接从光盘中菜单选择GHOST,或者DISKMAN。请批处理高手帮助! 提取文件一:AUTOEXEC。BAT如下。 ECHO OFF LH MSCDEX.EXE /D:mscd000>nul 加载CD-ROM驱动到高端内存并传送到虚拟软盘/D是什么意思? findcd /s>nul 不明白!是不是传送findcd.exe文件到虚拟软盘? call findcdr "ghost.exe" C D E F G H I J K L M N O P Q R S T U V W X Y Z 不明白是什么意思,可能是找光驱的盘符吧? %CDROM%: ghost -clone,mode=pload,src=winxpsp2.gho:1,dst=1:1 -sure -rb 自已恢得光盘的的winxp.gho文件。  请教>nul是传送相关文件到虚拟软盘的意思吧!别外我想不调用虚拟软盘,想直接从光盘中运行GHOST.exe。我是不是应该把它删去!?????? 提取文件二:findcd.bat批处理文件 如下! 在GHOST.IMG下提取的FINCDC.BAT文件,应刻是光驱分配盘符的自动处理文件,能看懂一点。请高手指教! @echo off    关闲显示 set file=%1 设置文件变量参数为%1 :FCDR 标号 if "%CDROM1%"=="%2:" goto SCDR 如果参数%1完全等于%2就跳转到标号scdr的语句。 shift 如果不完全相等,则左移一位,就是取A,B,C。。。 goto FCDR 跳到标号fcdr语句处 :SCDR 标号 cda %2:>nul 把光盘的文件加载到虚拟软盘???????????CDA是什么意思? IF errorlevel 1 goto next  这一句不明白??? if not exist %2:\%FILE% goto next 不明白???? set cdrom=%2 应该是设置光驱盘符为变量%2取的值? goto end     跳转到结束语句? :next 标号! if "%2"=="Z" goto end 如果变量%2完全等于Z则跳到结束语句。 shift 否则左很移一位。 goto SCDR 否则跳转到语句scdr处。 :end       结束语句。 我以上分析对不对,请老师给指教一二。另外,不想把光盘的文件加载到虚拟软盘上,直接在光盘 上调用是不是把 cda %2:>nul 这一句删除了就可以???   我想实践上述功能如何修改这两个批处理???


2006-2-15 12:50
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『第 2 楼』:  

怎么没有人回贴,,,,,,,,自已顶一下,不能沉下去!


2006-2-16 15:34
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
wl00560
银牌会员





积分 1384
发帖 709
注册 2005-10-29
状态 离线
『第 3 楼』:  

我比你还不如呢,嘻嘻,帮你顶一下。


2006-2-17 01:07
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 4 楼』:  

Re sxhc6868: 你的理解很多都是正确的,我只对你原文理解有误或有偏差的地方做了简单的注释,重新张贴于下,愿与兄共鉴!
 请教>nul是传送相关文件到虚拟软盘的意思吧!别外我想不调用虚拟软盘,想直接从光盘中运行GHOST.exe。我是不是应该把它删去!??????
>nul 是将命令执行后的输出信息重定向到空设备中,即隐藏信息输出。 从光盘调用 ghost.exe ,只需要在 ghost 前加上它在光盘中的路径即可 提取文件一:AUTOEXEC.BAT
@ECHO OFF
LH MSCDEX.EXE /D:mscd000>nul
:: 加载CD-ROM驱动到高端内存
findcd /s>nul
:: 寻找光驱并将其盘符保存入环境变量 %CDROM1% %CDROM2% ...
call findcdr "ghost.exe" C D E F G H I J K L M N O P Q R S T U V W X Y Z 
:: 调用批处理 findcdr.bat,检查光驱盘符 %cdrom1% 并写入到环境变量 %cdrom%
%CDROM%:
:: 切换至找到的光驱盘符
ghost -clone,mode=pload,src=winxpsp2.gho:1,dst=1:1 -sure -rb
:: 调用 ghost 从镜像文件 winxpsp2.gho 恢复。
提取文件二:findcd.bat(应为findcdr.bat)
@echo off
set file=%1
:: 设置环境变量 %file% 为命令行参数 %1 (即保存第一个参数 ghost.exe)
:FCDR
if "%CDROM1%"=="%2:" goto SCDR
:: 如果 %cdrom1% 等于 %2: 就跳转到标号scdr的语句,即匹配光驱盘符即发生跳转。
shift
:: 左移一次命令行参数,此时原 %2 变为 %1,%3 变为 %2 依次类推
goto FCDR
:: 继续 fcdr 循环
:: *** 此处代码存在问题,如果 %cdrom1% 未空(即未找到光驱盘符),则陷入死循环
:: *** 可在 shift 之后加一句 if "%2"=="" goto end 解决此问题

:SCDR
cda %2:>nul
:: 测试光驱 %2: 是否准备好光盘
if errorlevel 1 goto next
:: 返回错误码大于等于 1 即为未准备好,跳到 next 处判断是否继续 fcdr 循环
if not exist %2:\%FILE% goto next
:: 否则准备好,检查是否存在文件 %file% ,即前面保存的 ghost.exe ,如果没有则也跳至 next 处
set cdrom=%2
:: 否则光盘盘符 %2 有效,将之保存至环境变量 %cdrom% 中
goto end

:: 如果光驱盘符为 Z ,则认为循环结束,否则继续 fcdr 循环
:: *** 此处代码存在问题,因为 %cdrom1% 只保存了第一个光驱盘符,只能与命令行中盘符串成功匹配一次
:: *** 如果在第一次匹配成功的 scdr 中检测无法通过,则以后的检测都属多余操作
:: *** 在此建议:或者判断并改用 %cdrom2% 进行盘符匹配,或者在 scdr 中直接跳至 end 处结束
:next
if "%2"=="Z" goto end
shift
goto SCDR
:end




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-2-17 09:48
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『第 5 楼』:  

谢谢版主,谢谢版主,等我仔细研究研究,不懂的地方再发贴请教!


2006-2-17 15:06
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『第 6 楼』:  

版主:我有几个地方理解的不太清楚。请兄能否能解释一下! 一:nul 是将命令执行后的输出信息重定向到空设备中,即隐藏信息输出。 从光盘调用 ghost.exe ,只需要在 ghost 前加上它在光盘中的路径即可   这句话的意思是不是,NUL的作用是把程序运行的结果不在屏幕 上显示出来。 如果不加NUL参数,则运行结果就会在屏幕上显示出来? 二: 可在 shift 之后加一句 if "%2"=="" goto end 解决此问题   加这一句的意思是:没有找到相对应的光驱盘符,也跳转到结束,在实际应用 是是不是意味着这个计算机没有光驱。。。?????、 三: 此处代码存在问题,因为 %cdrom1% 只保存了第一个光驱盘符,只能与命令行中盘符串成功匹配一次 :: *** 如果在第一次匹配成功的 scdr 中检测无法通过,则以后的检测都属多余操作 :: *** 在此建议:或者判断并改用 %cdrom2% 进行盘符匹配,或者在 scdr 中直接跳至 end 处结束    这句话我理解的稀里湖涂的。。我的理解是,如果第一次匹配光驱成功,但是SCDR检测没有GHOST.EXE文件,则取光驱盘符不是Z时,左移一位,又跳到SCDR处,检测是否有GHOST.exe文件,直到检测到光驱上ghost.exe文件,假如,最后一个盘符也没有GHOST.EXE文件,但符合Z的条件,则结束整个程序。    是不是这样,为什么要加最后的那个 %cdrom2% 进行盘符匹配呢?另外,这个程序是不是能在双光驱的机子上找到GHOST.EXE文件,如果我说错了,要改的话,具体我改怎么改。


2006-2-18 19:36
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
Scott0902
中级用户





积分 466
发帖 237
注册 2005-10-12
状态 离线
『第 7 楼』:  

一、没错 二、意味着没有加载光驱,或者光驱不存在。


2006-2-19 00:30
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 8 楼』:  

Re sxhc6868: 十分抱歉!因为精力有限,对于非解答室的主题帖,我的回复往往会延迟数日。对你的三点问题分别回复如下: 一、确实如此,不过此处的 NUL 因为使用了重定向符号 > ,因而并不会传递给前面的 findcd 或者其它 DOS 命令与程序,所以此时它和 > 均不属于命令行参数。而是一个 DOS 下的逻辑设备,可以“吞噬”一切输入输出数据,copy nul test1.txt 就是比较典型的用例。 二、if "%2"=="" goto end 的直接含义为,命令行中盘符串循环匹配结束后,跳出循环不再匹配。这里存在以下几种可能: 1、%cdrom1% 有值,并且在 fcdr 中撇配成功,但在 scdr 中检测未通过; 2、%cdrom1% 有值,但并不是 c-z 的任何一个盘符,则程序始终无法成功匹配,最后跳出 fcdr 循环; 3、%cdrom1% 为空,程序也无法成功匹配,最后跳出end处结束 fcdr 循环。至于 %cdrom1% 是否为空,为何为空,这取决于程序所处的环境。可能是没有或未加载光驱,也可能是 findcd 执行错误,也可能是 DOS 环境空间溢出等,也可能是其它未知的原因。 三、你的理解和原程序在此处都是正确的,是我的理解有误,我将 :end 前的 goto scdr 理解为了 goto fcdr 。多谢指正!




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-2-20 14:16
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『第 9 楼』:  

非常感谢版主!知道你非常忙,但是能得到你的回复心中十分高兴,是不是这贴子我发错地方了,,,,无意中发了个精品贴!   还有疑问版!我按照你说的修改了findcd.bat文件,加入了if "%2"=="" goto end 这一句,而后制成IMG文件,放入EASYBOOT中做成了ISO。选择GHOST,时,能进入GHOST。EXE,可是提示如下“A:\ghostterr.txt"选择退出或者继续,不知道是什么问题?  还有ISO文件的菜单二是DISKMAN,提示如下”打开文件LOOKBACK.BAT出错,你将不能使用回朔功能,  我想这是不是我没有加载虚拟软盘的原因!在原AUTOEXEC。BAT中如何加载!!


2006-2-21 13:18
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 10 楼』:  

Re sxhc6868: 第一个问题:需要查看 A:\ghosterr.txt 文件内容才能知道具体原因,这是 ghost 生成的错误信息报告文件,里面应该有具体的错误号码和信息; 第二个问题: LOOKBACK.BAT 怀疑应为 LOOKBACK.DAT ,这是 diskman/diskgen 所要生成的数据文件,其中记录这 diskman/diskgen 的分区操作,以供“回溯”(即撤销); 这两个问题应该都与虚拟盘有关,可引导光盘大部分是模拟类引导,即模拟软驱(通常为A:)并加载软盘镜像作为虚拟软盘进行引导,而软盘启动过程中有可能还会利用内存再虚拟出一个内存磁盘(通常为硬盘后的第一个盘符)。 在这其间,因为光盘是只读的,无法写入任何临时文件和数据,因此所有会生成临时数据和文件的程序都应避免在光盘直接运行。而光盘虚拟出的虚拟软盘,因为虚拟方式的不同,有可能只读(很少一部分),有可能可写,因此许多软件都选择在虚拟软盘中运行。而虚拟软盘中再虚拟出的内存盘则必然可写,因此许多需要频繁读写临时数据的程序会选择在内存盘中。 根据你的情况,我建议将 diskman / ghost 直接放入可引导软盘镜像中,在光盘中使用此软盘镜像引导系统,或者在引导完成后将它们拷贝到虚拟软盘或内存盘中运行。




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-2-22 14:07
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『第 11 楼』:  

谢谢版主,你说得都是非常专业的问题,"我建议将 diskman / ghost 直接放入可引导软盘镜像中,在光盘中使用此软盘镜像引导系统,或者在引导完成后将它们拷贝到虚拟软盘或内存盘中运行。" 我是个新手,以上面的例子为例,我应该如何去做.能说详细一点吗!


2006-2-22 16:46
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『第 12 楼』:  

版主:我在网上查了资料!跟虚拟软盘有关系的几个命令如下: ramdrive.sys 虚拟磁盘文件 xmsdsk.exe 虚拟内存盘创建程序!应该加载它吧! 具体是在autoexec.bat中还是在config.sys中加载,如何加载?


2006-2-22 19:05
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『第 13 楼』:  

浏览量这么大,怎么就是没有人回,,,,,,,,,


2006-2-26 16:43
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
Scott0902
中级用户





积分 466
发帖 237
注册 2005-10-12
状态 离线
『第 14 楼』:  

ramdrive.sys 必须在config.sys里加载 xmsdsk.exe 可以在config.sys或autoexec.bat里加载,运行 xmsdsk /? 查看详细用法。


2006-2-27 17:38
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
sxhc6868
初级用户





积分 50
发帖 19
注册 2006-2-15
状态 离线
『第 15 楼』:  

@ECHO OFF XMSDSK 2048 /Y FINDRAMD IF %RAMDRIVE%#==# GOTO NORAM COPY COMMAND.COM %RAMDRIVE%\ COPY REBOOT.COM %RAMDRIVE%\ COPY EXTRACT.EXE %RAMDRIVE%\ EXTRACT /E /L %RAMDRIVE%\ EBD.CAB > NUL SET COMSPEC=%RAMDRIVE%\COMMAND.COM PATH=%RAMDRIVE%;A: LH MSCDEX /D:IDE-CD /D:SCSI-CD /S /K LH MOUSE.COM > NUL %RAMDRIVE% DISKGEN GOTO SET :NORAM ECHO. ECHO. ECHO. ECHO COMPUTER CAN NOT MAKE RAMDRIVER , IT WILL BE RESTART ...... PAUSE > GOTO SET :SET echo MS-DOS 7.1 ... 这是DSIKMAN的AUTOEXEC.BAT文件!修改后的!也能正常运行 diskman,,,发出来,给大家共同分享!


2006-3-1 15:16
查看资料  发送邮件  发短消息  网志  OICQ (149768318)  编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: