在 MS-DOS 中没有预定义的很多环境变量,只有几个简单的环境变量:)
在 Windows CMD 中预定义的环境变量有很多:)
最简单的方法就是找一个它们在环境变量之中的差异:)
在 Windows CMD 中有环境变量:SystemRoot=C:\WINDOWS
在 MS-DOS 中系统没有预定义这个:SystemRoot 变量
所以上面方法只是一个省事儿的方法,但此单一判断并不能保证就一定是 MS-DOS 环境,因为万一被计算机使用者预先设定过一个名为 %SystemRoot% 的变量就会误判断:)
比较有效的还有 VAR 判断版本命令……和很多……
@echo off
if NOT == goto :END
:: 这之间是 MS-DOS 环境下可以使用的命令段,Windows CMD 环境下不会执行
echo MS-DOS
:END
:: 在 MS-DOS 与 Windows CMD 下都可以执行
如果不放心还可以再多比较一个存有差异的环境变量,不过这只是省事的方法,并不是严谨的判断方法。
在 MS-DOS 环境下,SET 不支持 += 等……运算,所以,如果设类似 A=2 ,则 A+=1(相当于计算 A=A+1 ),但在 MS-DOS 环境中绝对不会计算出结果为3,所以也就判断出了当前环境是 MS-DOS 环境。
...
...
set a=2
set /a a+=1
if == goto :END
...
...
以上是大概判断原理,如果是运行在窗口模式下,兄可以自行加入相关提示错误信息:)
Last edited by redtek on 2007-2-3 at 11:47 AM ]