标题: 请帮助分析一个批处理文件
[打印本页]
作者: seifer1754
时间: 2006-3-16 17:36
标题: 请帮助分析一个批处理文件
这个是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" 这个提示,不知道是什么原因造成的。
作者: Climbing
时间: 2006-3-17 08:49
楼主问的问题,要么就是一些DOS基础知识方面的问题,要么就跟具体的应用环境有关系。
在我看来,有些命令是不可能出现在DOS环境中的,有可能这是IBM专门为PC-DOS的批处理定制的命令,例如前面的DO循环命令及words()函数等。
作者: Climbing
时间: 2006-3-17 15:47
:: 这是设置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目录中了。