无忧启动论坛

标题: 谁帮我解释下这段BAT代码 [打印本页]

作者: hql5693541    时间: 2008-8-27 14:19
标题: 谁帮我解释下这段BAT代码
echo "%~dp0">tempriso.tx
type tempriso.tx | find /I "\SupperCD\PESETUP\" >nul
If not "%Errorlevel%"=="0" (Echo.&&Echo.&&Echo    请先将ISO或U盘内所有文件复制到 SupperCD 文件夹下再进行封装,按任意键退出 。。。 &&del tempriso.tx /q>nul 2>nul&PAUSE>NUL 2>NUL&&Exit)
del tempriso.tx /q>nul 2>nul
Echo.&&Echo.&&Echo       正在重新封装,请稍候 。。。
copy ..\boot\ISOLINUX.BIN ..\iso.bif /y>NUL 2>NUL
%DelATTR% grldr >NUL 2>NUL & %DelATTR% ..\*.* >NUL 2>NUL
If not Exist ..\grldr copy grldr ..\ /y>NUL 2>NUL&&del ..\AUTOEXEC.BAT /q >NUL 2>NUL&&del ..\COMMAND.COM /q >NUL 2>NUL&&del ..\IO.SYS /q >NUL 2>NUL&&del ..\MSDOS.SYS /q >NUL 2>NUL&&del ..\grub.exe /q >NUL 2>NUL
If Exist ..\ntldr del ..\ntldr /q >NUL 2>NUL
If not Exist ..\AUTORUN.INF copy Ins\AUTORUN.INF ..\ /y>NUL 2>NUL
Ins\MKISOFS -R -b iso.bif -no-emul-boot -boot-load-size 4 -V SupperCD -hide iso.bif -hide-joliet iso.bif -hide boot.catalog -hide-joliet boot.catalog -p blank -o ..\..\SupperCD.ISO ..
del ..\iso.bif /q >NUL 2>NUL
PAUSE>NUL 2>NUL

谁帮我解释下这段BAT代码
作者: xbox1    时间: 2008-8-28 04:52
echo "%~dp0">tempriso.tx   《应该是把引号内的字符放到文件tempriso.tx里面
type tempriso.tx | find /I "\SupperCD\PESETUP\" >nul   《这个是在TEMPRISO.TX里面寻找字符SUPPERCD什么的
If not "%Errorlevel%"=="0" (Echo.&&Echo.&&Echo    请先将ISO或U盘内所有文件复制到 SupperCD 文件夹下再进行封装,按任意键退出 。。。 &&del tempriso.tx /q>nul 2>nul&PAUSE>NUL 2>NUL&&Exit)  《 如果没匹配显示错误
del tempriso.tx /q>nul 2>nul  《删除刚才建立的TEMPRISO.TX文件
Echo.&&Echo.&&Echo       正在重新封装,请稍候 。。。  《 提示
copy ..\boot\ISOLINUX.BIN ..\iso.bif /y>NUL 2>NUL  《复制ISOLINUX.BIN采用合并模式和文件ISO.BIF
%DelATTR% grldr >NUL 2>NUL & %DelATTR% ..\*.* >NUL 2>NUL  《这个不知道
If not Exist ..\grldr copy grldr ..\ /y>NUL 2>NUL&&del ..\AUTOEXEC.BAT /q >NUL 2>NUL&&del ..\COMMAND.COM /q >NUL 2>NUL&&del ..\IO.SYS /q >NUL 2>NUL&&del ..\MSDOS.SYS /q >NUL 2>NUL&&del ..\grub.exe /q >NUL 2>NUL 《这行仿佛是在建立启动系统
If Exist ..\ntldr del ..\ntldr /q >NUL 2>NUL 《删除NTLDR,如果存在的话
If not Exist ..\AUTORUN.INF copy Ins\AUTORUN.INF ..\ /y>NUL 2>NUL  《如果没有AUTORUN.INF文件,则复制INS目录下的
Ins\MKISOFS -R -b iso.bif -no-emul-boot -boot-load-size 4 -V SupperCD -hide iso.bif -hide-joliet iso.bif -hide boot.catalog -hide-joliet boot.catalog -p blank -o ..\..\SupperCD.ISO ..  《然后用MKISOFS建立了一个SUPPERCD.ISO的ISO文件
del ..\iso.bif /q >NUL 2>NUL  《删除文件ISO.BIF
PAUSE>NUL 2>NUL  《暂停,按任意键退出


OVER不知道能帮助你不
作者: yichya    时间: 2008-8-28 08:28
这个是利用MKISOFS制作ISOLINUX可启动ISO的。
作者: wowfans    时间: 2008-8-28 10:29
echo "%~dp0">tempriso.tx 将批处理运行的当前路径传送到当前文件夹中的tempriso.tx中
type tempriso.tx | find /I "\SupperCD\PESETUP\" >nul 查找tempriso.tx中是否有\SUPUERCD\PESETUP字串
If not "%Errorlevel%"=="0" (Echo.&&Echo.&&Echo    请先将ISO或U盘内所有文件复制到 SupperCD 文件夹下再进行封装,按任意键退出 。。。 &&del tempriso.tx /q>nul 2>nul&PAUSE>NUL 2>NUL&&Exit)
del tempriso.tx /q>nul 2>nul
Echo.&&Echo.&&Echo       正在重新封装,请稍候 。。。
copy ..\boot\ISOLINUX.BIN ..\iso.bif /y>NUL 2>NUL
%DelATTR% grldr >NUL 2>NUL & %DelATTR% ..\*.* >NUL 2>NUL
If not Exist ..\grldr copy grldr ..\ /y>NUL 2>NUL&&del ..\AUTOEXEC.BAT /q >NUL 2>NUL&&del ..\COMMAND.COM /q >NUL 2>NUL&&del ..\IO.SYS /q >NUL 2>NUL&&del ..\MSDOS.SYS /q >NUL 2>NUL&&del ..\grub.exe /q >NUL 2>NUL
If Exist ..\ntldr del ..\ntldr /q >NUL 2>NUL
If not Exist ..\AUTORUN.INF copy Ins\AUTORUN.INF ..\ /y>NUL 2>NUL
Ins\MKISOFS -R -b iso.bif -no-emul-boot -boot-load-size 4 -V SupperCD -hide iso.bif -hide-joliet iso.bif -hide boot.catalog -hide-joliet boot.catalog -p blank -o ..\..\SupperCD.ISO ..
del ..\iso.bif /q >NUL 2>NUL
PAUSE>NUL 2>NUL

谁帮我解释下这段BAT代码

后面的很简单,并且有人已经解释了
作者: haiou327    时间: 2008-8-28 13:20
echo "%~dp0">tempriso.tx
把文件当前路径写入到当前目录中的tempriso.tx中,没有则建立tempriso.tx文件,用 echo %cd%>tempriso.txt也可,但最后少一个\

type tempriso.tx | find /I "\SupperCD\PESETUP\" >nul
查找tempriso.tx文件中的\SUPUERCD\PESETUP字符串参数/i是查找时不区分字符串大小写

If not "%Errorlevel%"=="0" (Echo.&&Echo.&&Echo    请先将ISO或U盘内所有文件复制到 SupperCD 文件夹下再进行封装,按任意键退出 。。。 &&del tempriso.tx /q>nul 2>nul&PAUSE>NUL 2>NUL&&Exit)
::这是个条件语句,结合上一句来分析,如果没有查找到\SupperCD\PESETUP\字符串,即在执行FINDfind /I "\SupperCD\PESETUP\"时的错误返回码非0时,在命令行提示请先将ISO或U盘内所有文件复制到 SupperCD 文件夹下再进行封装,按任意键退出 。。。当成功执行回显后用静默模式删除tempriso.tx(不提示用户是否删除的交互对话),不管是否删除tempriso.tx成功,在此执行暂停,按下任意键退出批处理.程序到结束.

del tempriso.tx /q>nul 2>nul  
如果find /I "\SupperCD\PESETUP\"的错误返回码为0时,跳转到此继续执行,即找到\SUPUERCD\PESETUP字符串时,静默模式删除tempriso.tx
Echo.&&Echo.&&Echo       正在重新封装,请稍候 。。。 <<=======提示

copy ..\boot\ISOLINUX.BIN ..\iso.bif /y>NUL 2>NUL
复制父目录里boot子目录下的ISOLINUX.BIN到父目录下并改命为iso.bif,存在iso.bif文件时则覆盖.

%DelATTR% grldr >NUL 2>NUL & %DelATTR% ..\*.* >NUL 2>NUL
本句%DelATTR%是个变量,要看批处理全句,如果把变量%DelATTR%赋于(set delattr=attrib -h -r -s)即%DelATTR% grldr=attrib -h -r -s  grldr为去掉grldr的只读隐藏系统属性,不难理解%DelATTR% ..\*.*就是为去掉父目录所有文件的只读隐藏系统属性.要看实际情况如何定义变量%DelATTR%赋予的参数

If not Exist ..\grldr copy grldr ..\ /y>NUL 2>NUL&&del ..\AUTOEXEC.BAT /q >NUL 2>NUL&&del ..\COMMAND.COM /q >NUL 2>NUL&&del ..\IO.SYS /q >NUL 2>NUL&&del ..\MSDOS.SYS /q >NUL 2>NUL&&del ..\grub.exe /q >NUL 2>NUL
这句一并分析了,如果父目录下不存在grldr文件则复制当前目录下grldr过去,成功复制完毕并删除父目录下autoexec.bat,command.com,io.sys,msdos.sys,grub.exe五个文件

If Exist ..\ntldr del ..\ntldr /q >NUL 2>NUL
如果父目录存在ntldr文件则删除ntldr

If not Exist ..\AUTORUN.INF copy Ins\AUTORUN.INF ..\ /y>NUL 2>NUL  
如果父目录的下不存在AUTORUN.INF文件,并复制Ins目录AUTORUN.INF文件到父目录

Ins\MKISOFS -R -b iso.bif -no-emul-boot -boot-load-size 4 -V SupperCD -hide iso.bif -hide-joliet iso.bif -hide boot.catalog

-hide-joliet boot.catalog -p blank -o ..\..\SupperCD.ISO ..  

对MKISOFS命令不熟悉,应该是制作一张可启动的光盘镜像,用iso.bif作为引导文件,文件系统为joliet,卷标为SupperCD文件名为
SupperCD.ISO 输出到当前父目录的父目录下。

del ..\iso.bif /q >NUL 2>NUL  <<=======删除父目录的下iso.bif文件
PAUSE>NUL 2>NUL   
  
                                          ====================over==================


如有曲解请指正!!!

[ 本帖最后由 haiou327 于 2011-4-5 14:04 编辑 ]
作者: hql5693541    时间: 2008-8-30 16:47
非常感谢 非常感谢 非常感谢




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3