![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 08:06 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 如何判断批文件的运行环境是纯dos还是窗口模式? |
| 可打印版本 1,003 / 7 |
| 第1楼 lizaoyou | 发表于 2007-02-03 13:25 |
| 中级用户 发帖 85 积分 210 来自 广东广州 | |
|
如何判断批文件的运行环境是纯dos还是窗口模式? 如题:拟指定一批文件只能在纯dos下运行,若在窗口模式下执行则返回出错信息,有何好办法?请指教。
|
|
| 第2楼 redtek | 发表于 2007-02-03 22:28 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
在 MS-DOS 中没有预定义的很多环境变量,只有几个简单的环境变量:)
在 Windows CMD 中预定义的环境变量有很多:) 最简单的方法就是找一个它们在环境变量之中的差异:) 在 Windows CMD 中有环境变量:SystemRoot=C:\WINDOWS 在 MS-DOS 中系统没有预定义这个:SystemRoot 变量 所以上面方法只是一个省事儿的方法,但此单一判断并不能保证就一定是 MS-DOS 环境,因为万一被计算机使用者预先设定过一个名为 %SystemRoot% 的变量就会误判断:) 比较有效的还有 VAR 判断版本命令……和很多…… 如果不放心还可以再多比较一个存有差异的环境变量,不过这只是省事的方法,并不是严谨的判断方法。 在 MS-DOS 环境下,SET 不支持 += 等……运算,所以,如果设类似 A=2 ,则 A+=1(相当于计算 A=A+1 ),但在 MS-DOS 环境中绝对不会计算出结果为3,所以也就判断出了当前环境是 MS-DOS 环境。 以上是大概判断原理,如果是运行在窗口模式下,兄可以自行加入相关提示错误信息:) [ Last edited by redtek on 2007-2-3 at 11:47 AM ] |
|
| 第3楼 anqing | 发表于 2007-02-03 23:35 |
| 高级用户 发帖 413 积分 859 | |
|
基础知识学习了
|
|
| 第4楼 lizaoyou | 发表于 2007-02-04 00:27 |
| 中级用户 发帖 85 积分 210 来自 广东广州 | |
|
多谢redtek兄的详细解答。
我原使用环境变量OS进行判断,但正如兄所言,有可能会误判。现使用redtek兄的set方法,则能有效解决该问题;但我在WinXP pro sp2的CMD下使用set时需加/a参数,否则不能计算a+=1(原来有此技巧,受教了),不知何故?还烦请redtek兄指教。 |
|
| 第5楼 redtek | 发表于 2007-02-04 00:48 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
多谢lizaoyou兄指正~:)
忘了写 /a 了,哈哈……代码中的错误我改过来了~:) |
|
| 第6楼 lizaoyou | 发表于 2007-02-04 01:48 |
| 中级用户 发帖 85 积分 210 来自 广东广州 | |
|
发现strings.com有此功能:
@echo off set z= strings z=inwin if not "%z%"=="0" echo This program cannot be run in CMD mode. if not "%z%"=="0" goto end ... ... :end |
|
| 第7楼 TurboY | 发表于 2007-02-04 04:08 |
| 中级用户 发帖 99 积分 322 来自 湖北 | |
|
好象strings.com等很多工具是在WIN下不能设置环境变量的——所以也能用这个法子来判断。
|
|
| 第8楼 redtek | 发表于 2007-02-04 06:00 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
多谢lizaoyou和TurboY兄指点~:)
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |