中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-30 01:07
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 请帮助分析一个批处理文件 查看 857 回复 2
楼 主 请帮助分析一个批处理文件 发表于 2006-03-16 17:36 ·  中国 上海 普陀区 电信
初级用户
积分 26
发帖 9
注册 2006-03-16 16:57
20年会员
UID 52194
状态 离线
这个是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" 这个提示,不知道是什么原因造成的。
2 发表于 2006-03-17 08:49 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
楼主问的问题,要么就是一些DOS基础知识方面的问题,要么就跟具体的应用环境有关系。

在我看来,有些命令是不可能出现在DOS环境中的,有可能这是IBM专门为PC-DOS的批处理定制的命令,例如前面的DO循环命令及words()函数等。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 发表于 2006-03-17 15:47 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
:: 这是设置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目录中了。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
论坛跳转: