作为IT工作者,我们经常与命令行打交道。
不过不知道是什么原因,很多人将DOS和命令行混为一谈(或许是因为它们长得很像?)。虽说吧,这样并没有什么实质性的危害,至少大部分情况下如此,不过该严谨的地方还是严谨一下比较好。
下面来说说Win32(对于Win64,文章末尾会单独拿出来说明)环境中,DOS和命令行的关系。
显然,提到DOS,一般指很久以前那个黑底白字的玩意儿,早年的Win9x中,也有它,这个DOS是真正的DOS,16位模式。
后来NT内核的Windows(也就是Win2000以后的)普及后,DOS彻底的从Windows中消失。但是为了兼容以前的老软件,微软内置了一个DOS虚拟机(NTVDM),这个虚拟机可以模拟出16位的DOS环境。很多人这里就分不清了,Windows中不是还有一个命令提示符(Command Prompt)么? 它又是什么东东呢?
Windows中的命令提示符,是一个普通的应用程序 ,就是 cmd.exe,这是一个 纯Win32程序 ,跟 DOS完全不搭边 。只不过它和DOS界面很像,再加上支持很多原来的DOS的命令 ,所以很多人把这个称作DOS。这里牵涉到一个子系统的问题,Win32程序在链接的时候可以调整子系统 ,一个是Win32 Console(命令行风格),Win32 GUI(图形窗口);显然,cmd.exe的子系统是Win32 Console。不过这个并没有很大的影响,Console程序一样可以创建窗口什么的,而GUI也可以创建命令提示符。
至于 NTVDM,也很简单 ,如果你想体验 ,请在运行中运行command.com即可。然后会执行一个跟命令提示符几乎一样的程序,这个就是模拟的16位DOS。
最后,在Win64中,NTVDM彻底的消失,这意味着无法在Win64上使用任何16位的老式程序了(我个人很期待Wow64从Win64里面消失的那个时刻,毕竟64位平台下面还是使用纯正的64位应用程序效率是最高的)。

转载于:https://blog.51cto.com/spinlock/422887

关于DOS和命令行的故事相关推荐

  1. dos下命令行执行程序时候注意程序所使用文件的路径问题

    dos下命令行执行程序时候,最好是用cd命令先切换到程序所在目录下,这样就不会出现文件找不到的问题,如果由于特殊原因,不使用cd命令,而只使用路径命令时候程序中访问的资源也只能是改成绝对路径了,这样对 ...

  2. Python命令行解析:IDE内点击Run运行代码直接得出结果、基于TF flags(或argparse、sys.argv)在Dos内命令行(一条命令)调用代码文件得出结果

    Python命令行解析:IDE内点击Run运行代码直接得出结果.基于TF flags(或argparse.sys.argv)在Dos内命令行(一条命令)调用代码文件得出结果 目录 命令行解析 T1.采 ...

  3. DOS或命令行下查看进程,结束进程命令

    DOS或命令行下查看进程,结束进程命令  XP中和进程有关的命令: 在system32目录中,dir task* 会看到如下几个文件: +------------------------------+ ...

  4. 如何从文件夹打开dos界面/命令行工具

    ①找到指定文件的文件夹,按住"shift+右键" ②选择"在此处打开命令窗口"选项

  5. DOS命令行高级应用

    执行多个命令时,命令这间加&来隔开 if命令及变量基本格式: IF[not]errorlevel数字命令语句如果程序运行最后返回一个等于或大于指定数字的退出编码,指定条件为"真&qu ...

  6. 怎样复制粘贴windows命令行中的内容

    windows是图形化界面和鼠标点击操作的操作系统,但类DOS的命令行(简称CMD)依然存在,它还可以方便快捷的来维护管理电脑,有时候还是必须运行环境.但在命令行下想复制/粘贴某些东西就没有我们常用的 ...

  7. mysql 备份命令行_mysql命令行备份方法

    一.mysql备份 1.备份命令 格式:mysqldump -h主机IP -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql # 本地备份可以不添加端口和主机IP ...

  8. 怎样复制粘贴windows命令行中的内容 .

    windows是图形化界面和鼠标点击操作的操作系统,但类DOS的命令行(简称CMD)依然存在,它还可以方便快捷的来维护管理电脑,有时候还是必须运行环境.但在命令行下想复制/粘贴某些东西就没有我们常用的 ...

  9. DOS命令行操作MySQL常用命令

    平时用可视化界面用惯了,如果紧急排查问题,没有安装可视化工具的话,只能通过命令来看了. 以备不时之需,我们要熟悉一下命令行操作MySQL. 打开DOS命令窗口:WIN + R 输入cmd,回车 然后输 ...

  10. 命令行收集(DOS/Linux/nc/xscan/xsniffer)

    #1 一: net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" ...

最新文章

  1. SQL中的循环语句_类似FOR循环
  2. 递归删除父节点及所有子节点(转)
  3. Cygwin简介及其下载安装卸载
  4. 解决oracle绑定变量重复,基于ORACLE SQL优化之绑定变量(4)
  5. aws使用技巧_AWS:避免那些“神圣的法案”时刻的一些技巧
  6. dataframe for循环 筛选_Python循环12种超强写法,又快又省内存
  7. 数据安全备份刻不容缓 在线备份业务前景广阔
  8. Git使用出现git@github.com: Permission denied (publickey)
  9. ImportError: libgdal.so.20: cannot open shared object file: No such file or directory
  10. 3个阶段 项目征名_中资企业新签的3个海外项目开工
  11. objective-C nil,Nil,NULL 和NSNull的小结
  12. cassandra数据库可视化工具
  13. 梅特勒托利多xk3124电子秤说明书_托利多电子秤完整操作手册
  14. html调用js函数取随机返回数值并自动显示在html页面
  15. 【Django】Django视图views详解
  16. PCB中的SOLD MASK和阻抗开窗
  17. 部分PTA的入门习题以及题解
  18. 大宝收购案花落强生 静待商务部审批
  19. 鸿蒙操作系统全面屏,首发鸿蒙操作系统!华为P50 Pro稳了:居中开孔全面屏
  20. 如何让USB-C手机,电脑投屏到VR眼镜方案?还能同时实现充电?乐得瑞LDR6282 转接器方案

热门文章

  1. ENVI去除NDVI/EVI异常值、NAN(not a number,无效值)、无穷大(inf)
  2. 报错’TypeError: only integer scalar arrays can be converted to a scalar index‘
  3. PHP全文索引 讯搜xunsearch
  4. Mac电脑Docker拉取Mysql报错?no matching manifest for linux/arm64/v8 in the manifest list entries
  5. 狂神说Redis笔记三
  6. js处理服务器传递的json文件,获取js 文件传递的参数并使用json2进行json数据转换...
  7. 还想呆在公司养老?别做梦了
  8. java实时解析mysql日志,利用maxwell 组件实时监听Mysql的Binlog日志,并且把解析的json格式数据发送到kafka窗口供实时消费...
  9. c语言画圆登录窗口,C语言画圆问题。怎么跳过画图界面直接出来了?
  10. 项目实战-1读取记事本中的文件,写入到slice切片中。