中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-10 03:25
47,812 主题排行 / 349,914 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理文件!谁能看懂?
可打印版本  4,119 / 18
第1楼 sxhc6868 发表于 2006-02-15 12:50
初级用户 发帖 19 积分 50
批处理文件!谁能看懂?
从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 这一句删除了就可以???  

我想实践上述功能如何修改这两个批处理???
第2楼 sxhc6868 发表于 2006-02-16 15:34
初级用户 发帖 19 积分 50
怎么没有人回贴,,,,,,,,自已顶一下,不能沉下去!
第3楼 wl00560 发表于 2006-02-17 01:07
银牌会员 发帖 709 积分 1,384
我比你还不如呢,嘻嘻,帮你顶一下。
第4楼 willsort 发表于 2006-02-17 09:48
元老会员 发帖 1,512 积分 4,432
Re sxhc6868:

你的理解很多都是正确的,我只对你原文理解有误或有偏差的地方做了简单的注释,重新张贴于下,愿与兄共鉴!


 请教>nul是传送相关文件到虚拟软盘的意思吧!别外我想不调用虚拟软盘,想直接从光盘中运行GHOST.exe。我是不是应该把它删去!??????


>nul 是将命令执行后的输出信息重定向到空设备中,即隐藏信息输出。
从光盘调用 ghost.exe ,只需要在 ghost 前加上它在光盘中的路径即可

提取文件一:AUTOEXEC.BAT

提取文件二:findcd.bat(应为findcdr.bat)
第5楼 sxhc6868 发表于 2006-02-17 15:06
初级用户 发帖 19 积分 50
谢谢版主,谢谢版主,等我仔细研究研究,不懂的地方再发贴请教!
第6楼 sxhc6868 发表于 2006-02-18 19:36
初级用户 发帖 19 积分 50
版主:我有几个地方理解的不太清楚。请兄能否能解释一下!
一: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文件,如果我说错了,要改的话,具体我改怎么改。
第7楼 Scott0902 发表于 2006-02-19 00:30
中级用户 发帖 237 积分 466
一、没错

二、意味着没有加载光驱,或者光驱不存在。
第8楼 willsort 发表于 2006-02-20 14:16
元老会员 发帖 1,512 积分 4,432
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 。多谢指正!
第9楼 sxhc6868 发表于 2006-02-21 13:18
初级用户 发帖 19 积分 50
非常感谢版主!知道你非常忙,但是能得到你的回复心中十分高兴,是不是这贴子我发错地方了,,,,无意中发了个精品贴!
  还有疑问版!我按照你说的修改了findcd.bat文件,加入了if "%2"=="" goto end 这一句,而后制成IMG文件,放入EASYBOOT中做成了ISO。选择GHOST,时,能进入GHOST。EXE,可是提示如下“A:\ghostterr.txt"选择退出或者继续,不知道是什么问题?
 还有ISO文件的菜单二是DISKMAN,提示如下”打开文件LOOKBACK.BAT出错,你将不能使用回朔功能,
 我想这是不是我没有加载虚拟软盘的原因!在原AUTOEXEC。BAT中如何加载!!
第10楼 willsort 发表于 2006-02-22 14:07
元老会员 发帖 1,512 积分 4,432
Re sxhc6868:

第一个问题:需要查看 A:\ghosterr.txt 文件内容才能知道具体原因,这是 ghost 生成的错误信息报告文件,里面应该有具体的错误号码和信息;

第二个问题: LOOKBACK.BAT 怀疑应为 LOOKBACK.DAT ,这是 diskman/diskgen 所要生成的数据文件,其中记录这 diskman/diskgen 的分区操作,以供“回溯”(即撤销);

这两个问题应该都与虚拟盘有关,可引导光盘大部分是模拟类引导,即模拟软驱(通常为A:)并加载软盘镜像作为虚拟软盘进行引导,而软盘启动过程中有可能还会利用内存再虚拟出一个内存磁盘(通常为硬盘后的第一个盘符)。

在这其间,因为光盘是只读的,无法写入任何临时文件和数据,因此所有会生成临时数据和文件的程序都应避免在光盘直接运行。而光盘虚拟出的虚拟软盘,因为虚拟方式的不同,有可能只读(很少一部分),有可能可写,因此许多软件都选择在虚拟软盘中运行。而虚拟软盘中再虚拟出的内存盘则必然可写,因此许多需要频繁读写临时数据的程序会选择在内存盘中。

根据你的情况,我建议将 diskman / ghost 直接放入可引导软盘镜像中,在光盘中使用此软盘镜像引导系统,或者在引导完成后将它们拷贝到虚拟软盘或内存盘中运行。
第11楼 sxhc6868 发表于 2006-02-22 16:46
初级用户 发帖 19 积分 50
谢谢版主,你说得都是非常专业的问题,"我建议将 diskman / ghost 直接放入可引导软盘镜像中,在光盘中使用此软盘镜像引导系统,或者在引导完成后将它们拷贝到虚拟软盘或内存盘中运行。"
我是个新手,以上面的例子为例,我应该如何去做.能说详细一点吗!
第12楼 sxhc6868 发表于 2006-02-22 19:05
初级用户 发帖 19 积分 50
版主:我在网上查了资料!跟虚拟软盘有关系的几个命令如下:
ramdrive.sys 虚拟磁盘文件
xmsdsk.exe 虚拟内存盘创建程序!应该加载它吧!
具体是在autoexec.bat中还是在config.sys中加载,如何加载?
第13楼 sxhc6868 发表于 2006-02-26 16:43
初级用户 发帖 19 积分 50
浏览量这么大,怎么就是没有人回,,,,,,,,,
第14楼 Scott0902 发表于 2006-02-27 17:38
中级用户 发帖 237 积分 466
ramdrive.sys 必须在config.sys里加载

xmsdsk.exe 可以在config.sys或autoexec.bat里加载,运行 xmsdsk /? 查看详细用法。
第15楼 sxhc6868 发表于 2006-03-01 15:16
初级用户 发帖 19 积分 50
@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,,,发出来,给大家共同分享!
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023