中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-10-26 16:39
共 47,815 主题排行 / 349,928 发帖 / 今日 0 篇 / 48,288 会员排行
DOS启动盘 & LOGO技术 (启动盘室) » 怎样判断系统当前运行的环境是dos还是 windows
可打印版本  946 / 0
第1楼 koala 发表于 2007-07-14 10:56
初级用户 发帖 105 积分 199 来自 江苏
怎样判断系统当前运行的环境是dos还是 windows
:( 要求纯脚本,不允许使用第三方工具
可以从启动日志和注册表入手
-------------------------------------------------
写怎样的一个批处理脚本可以实现以下目的:

写一个含有goto指向功能的批处理脚本,判断当前系统运行的环境是在dos下还是在windows下


个人看法:用注册表regedit /e KeyName(注册表保存相关数据的位置) 导出到 filename(导出文件名字)

然后 type "filename(导出文件名字)"|"%find%" /i "strings"查找相关字符串(strings)

再用 if errorlevel返回错误代码,可是我不知道收藏相关数据的注册表位置在哪里


解题思路:系统每次成功引导都会留下日志(或者说是痕迹),
他们可能保存在 registry
或 %systemroot%中某个log文件中
请求高手帮帮koala的忙

个人模拟的命令行格式如下:
(由于爱死dos,受德国人的脚本思想的启惠,衍生了以下的例子)
如果感兴趣我将本人汉化修正的传给你看看
或者到 http://loveskoala.gbaopan.com下载 "NT核系统服务优化"



----------------------------------------------------------------------------------------------------------
脚本正文
----------------------------------------------------------------------------------------------------------
@echo off
path==%systemroot%\system32;%systemroot%;%systemdrive%\;
set find=%systemroot%\system32\find.exe
title 确定操作系统的运行环境
color 1a
cls

:Find_Out_OS
regedit /e filename keyname

:/*********
rem 或者 reg export keyname filename

rem 导出的注册表文件大小大约是上面的1/9

:**********/

type "filename"|"%find%" /i "strings1" >nul
if errorlevel==1 (

type "filename"|"%find%" /i "strings2" >NUL
if errorlevel==1 (

SET windows_OS=FALSE
echo 未发现有效的操作系统!
goto NO_FIND_OS
)

SET windows_OS=FALSE
echo 您的系统当前运行在DOS下!
goto :NO_windows_OS
)

SET windows_OS=TRUE
echo 您的系统当前运行在windows下!
goto :NO_DOS_OS




:NO_DOS_OS
if windows_OS=TRUE command /options
............(执行命令部分)



NO_windows_OS
if windows_OS=FlASE command /options
...............(执行命令部分)




:NO_FIND_OS
if windows_OS=FlASE command /options
............(执行命令部分)
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023