中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 请帮助分析一个批处理文件 上一主题 | 下一主题
seifer1754
初级用户





积分 26
发帖 9
注册 2006-3-16
状态 离线
『楼 主』:  请帮助分析一个批处理文件

这个是IBM公司的一个电脑检测软件中的autoexec.bat程序,用到了很多的DOS命令和参数,希望大家能够帮助我分析一下,感激不尽。

@ECHO OFF
cls

/* REXX */
ramDrive = ''
/* validDrives = 'C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: '  */

validDrives = ' Y: X: W: V: U: T: S: R: Q: P: O: N: M: L: K: J: I: H: G: F: E: D: C:'

maxDrive = words(validDrives)

driveInfo = ''

DO i = 1 to maxDrive
   ramDrive = word(validDrives , i)
   driveInfo = rxdinfo(ramDrive)

   if driveInfo \= '' then do
      if word(driveInfo,4) = 'RAMDRIVE' then i = maxDrive+1
/*
      say "Drive: " ramDrive ", info: " driveInfo
      say "volume label = " word(driveInfo,4)
*/
   end /* do */
   
end /* do */


value('RAMDRIVE', ramDrive, 'DOSENVIRONMENT')

return
rem 这上面的一段批处理程序不清楚是什么意思

prompt PCDR$l$n$g            

rem 显示 <pcdr> 的命令提示

A:\DOS\MOUSE.COM > NUL  
%RAMDRIVE%
md PCDR
cd PCDR
copy A:\TPTOOLS\*.* . > NUL
copy A:\PLNRCHK.BAT . > NUL
copy A:\REXX.EXE    . > NUL
copy A:\RXDINFO.RX  . > NUL
copy A:\COMMAND.COM . > NUL

rem 这里是将软盘中的这些文件copy到什么地方去了?

SET COMSPEC=%RAMDRIVE%\PCDR\COMMAND.COM

call plnrchk.bat
if "%PLNRID%"=="NA" goto EXIT

echo Please wait, unpacking diagnostics ...
a:\tpdiag.exe -o > NUL
a:\TPPLGE2.EXE -o > NUL

rem 请问参数 -o 代表什么意思?

:ENDLOOP1

echo Done.

:LOOP2
echo.
echo Please insert PC-Doctor DOS #145-2 Disk and
pause
if not exist a:\tpdiag2.exe goto loop2
echo Please wait, unpacking diagnostics ...

a:\tpdiag2.exe -o -d > NUL
a:\tpplg91.exe -o    > NUL

if "%PLNRID%" == "SYSID96" goto TPPLGW7

a:\tpplgw4.exe -o > NUL
a:\tpplgw6.exe -o > NUL

if "%PLNRID%" == "SYSID91" goto ENDLOOP4

:TPPLGW7
a:\tpplgw7.exe -o > NUL

PLNRID2.EXE 168C/1014/1014/057E
IF NOT ERRORLEVEL 1 GOTO SKPPLGW7
COPY /Y .\*.ABG *.INI > NUL

rem 请问 copy /y.\*.ABG *.INI > NUL 是什么意思?

:SKPPLGW7

a:\TPPLGM7.EXE -o > NUL
COPY /Y .\HSF_ICH.4C6 *.INI > NUL

PLNRID2.EXE 8086/3582
IF NOT ERRORLEVEL 1 GOTO ENDLOOP2
A:\TPPLGD9.EXE -o > NUL
GOTO ENDLOOP4

:ENDLOOP2

echo Done.

rem 第二个软盘放入后,是否就不会执行下面的指令了?

:LOOP3
echo.
echo Please insert PC-Doctor DOS #145-3 Disk and
pause
if not exist A:\TPPLGD10.EXE goto loop3
echo Please wait, unpacking diagnostics ...

COPY A:\TPPLGD10.EXE . > NUL

:ENDLOOP3

echo Done.

:LOOP4
echo.
echo Please insert PC-Doctor DOS #145-4 Disk and
pause
if not exist A:\TPPLGD10.002 goto loop4
echo Please wait, unpacking diagnostics ...

COPY /b TPPLGD10.EXE+A:\TPPLGD10.002 TPPLGD10.EXE /y > NUL
TPPLGD10.EXE -o > NUL
DEL TPPLGD10.EXE > NUL

:ENDLOOP4

echo Done.

SET OPTIONS=
TPTSR1.COM

if "%PLNRID%" == "SYSID91" goto SYSID91
if "%PLNRID%" == "SYSID96" goto SYSID96

:SYSID91
     COPY /Y .\SYSID91\*.* . > NUL
     TPTSR.EXE 0F 00 0
     GOTO CHKINI

:SYSID96
     COPY /Y .\SYSID96\*.* . > NUL
     TPTSR.EXE 0F 00 0
     GOTO CHKINI

:CHKINI
     IF EXIST PCDR.INI GOTO RUNPCDR
     echo.
     echo.
     echo Missing PCDR.INI file.
     goto EXIT

:RUNPCDR
pcdr %OPTIONS%

:EXIT

在第一章软盘放入后,自动执行了以上的autoexec.bat,可是当按照提示放入第二章软盘后,不会再出现 "Please insert PC-Doctor DOS #145-3 Disk and" 这个提示,不知道是什么原因造成的。

2006-3-16 17:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 2 楼』:  

楼主问的问题,要么就是一些DOS基础知识方面的问题,要么就跟具体的应用环境有关系。

在我看来,有些命令是不可能出现在DOS环境中的,有可能这是IBM专门为PC-DOS的批处理定制的命令,例如前面的DO循环命令及words()函数等。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2006-3-17 08:49
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 3 楼』:  

:: 这是设置DOS提示符的命令,提示符会变成: PCDR<当前盘符>
prompt PCDR$l$n$g            

A:\DOS\MOUSE.COM > NUL  

:: 注意下面的命令将当前盘由A:盘改为虚拟内存盘
%RAMDRIVE%
md PCDR
cd PCDR

:: 现在的当前目录是:%RAMDRIVE%\PCDR,下面的命令中用.来表示这个目录
:: 而下面的copy命令们就是将A:盘的对应文件复制到上面的目录中
copy A:\TPTOOLS\*.* . > NUL
copy A:\PLNRCHK.BAT . > NUL
copy A:\REXX.EXE    . > NUL
copy A:\RXDINFO.RX  . > NUL
copy A:\COMMAND.COM . > NUL

rem 这里是将软盘中的这些文件copy到什么地方去了?
:: 所以,这个问题的答案就是,这些文件copy到虚拟内存盘的PCDR目录中了。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2006-3-17 15:47
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: