一、在cmd中执行一个不带后缀的命令(不带路径),首先会在无后缀的系统命令(如cd、dir等)中搜索,如果找到了就执行该命令,

(dir是无后缀的系统命令所以优先执行,无视当前目录中的dir.exe)

如果在无后缀的系统命令中找不到,则在当前目录中查找该命令+.exe、.msc、.bat等后缀的可执行文件或批处理文件,如果找到了则执行,如果没找到,再在环境变量那些目录中按上述规则搜索

 (系统的tasklist命令其实是tasklist.exe,所以在无后缀的系统命令中找不到,然后就在当前目录中搜索以tasklist命名的可执行文件【后缀为.exe、或.bat、.msc】当前目录中正好有个tasklist.exe)

(当前目录中不存在tasklist.exe或者tasklist.bat、tasklist.msc等可执行文件,遂在环境变量中搜索,找到系统目录中的tasklist.exe执行之)

二、如果cmd中输入的命令带后缀(不带路径),则首先在当前目录中搜索该文件若存在,如果该文件是一个可执行文件或批处理文件,则执行之,如果是其他一般文件则用与该类型文件关联的默认程序打开它

(在cmd当前工作目录中放入tst.exe、tst.exe.exe、tst.txt、tst.txt.exe四个文件,在已加入环境变量的目录D:\Program Files\Tencent\QQ\Bin中也放入同名的四个文件,不过exe文件输出内容以及txt文件存储的文本不同,分别显示了对应文件名和所在位置。如上面两图所示,在cmd中执行tst.exe和tst.txt命令,结果分别执行了当前目录中的tst.exe和打开了当前目录的tst.txt,表名优先在当前目录中搜索该文件。)

若当前目录不存在该文件,则在当前目录中查找是否存在以该文件名+可执行文件或批处理文件后缀(.exe、.bat、.msc等)命名的文件,如果找到了则执行之;

(将当前目录中的tst.exe和tst.txt删除后,再执行tst.exe和tst.txt命令,结果如上两图所示,分别执行了当前目录中的tst.exe.exe和tst.txt.exe程序,这说明在当前目录找不到该文件则继续在当前目录找以该文件名+可执行文件或批处理文件后缀命名的文件来执行,而不是去环境变量中查找该文件)

如果在当前目录中上述两种情况都未找到,才在环境变量所设置的那些目录中按上述顺序搜寻先是按cmd命令所给的准确文件名查找,如果有,是程序或批处理则执行,是其它文件就用默认程序打开;

(将当前目录中的tst.exe.exe和tst.txt.exe也删除后,cmd执行tst.exe和tst.txt命令,结果执行了已加入环境变量的目录中的tst.exe程序以及打开了该目录中的tst.txt文件,说明如果在cmd当前目录没找到该文件或该文件名.exe等可执行文件,就转而到环境变量中找该文件)

如果在环境变量目录中未找到该文件,再在环境变量目录中查找是否存在该文件名+可执行文件或批处理文件后缀(.exe、.bat、.msc等)的文件,如果找到了则执行之。

如果还是没有,则只好报错,该命令 is not recognised as an internal or external command, operable program or batch file.

当然如果cmd命令中带路径,很明显只在指定目录中寻找文件,而不会到环境变量中去找,如果文件名不带后缀,则跟第一种情况一样,在指定目录中寻找这个名称的可执行文件或批处理文件执行,找不到报错;如果带后缀,若存在,则执行或用默认程序打开,若不存在,寻找该文件名+可执行文件或批处理文件后缀的文件来执行,找不到报错。

ps: 又是一篇洋洋洒洒辛苦钻牛角尖的心血。我特么是不是钻得太细了? 强迫症使然,这是我学习过程中最大的绊脚石和障碍,严重影响效率。实际应用中哪有这么复杂的情况?命令中还带后缀,文件名还接连多个后缀,真是太钻牛角尖了。实际应用中一般都是很简单的,文件名+1个后缀,也不大可能会有这种刻意为之的重名,cmd命令一般都是第一种情况,不加后缀,执行系统命令或当前目录或环境变量目录中的可执行文件或批处理文件。但是我特么有强迫症,不去想这么细心理不舒服。

Windows cmd命令搜索顺序的更多相关文章

  1. Windows CMD命令大全(转)

    Windows CMD命令大全   命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行 ...

  2. 【转】Python实现修改Windows CMD命令行输出颜色(完全解析)

    用Python写命令行程序的时候,单一的输出颜色太单调.其实我们可以加些色彩,比如用红色表示警告,绿色表示结果正常等.网上也有几篇类似的帖子,但是没有把问题讲清楚,贴的代码也不是太清晰.这里,对Win ...

  3. Windows —— cmd命令

    Windows —— cmd命令 cd 命令 进入cmd的默认目录:默认为 C:\Users\Administrator> 进入文件夹:cd 文件夹名 返回上一层目录:cd.. 切换目录: 清屏 ...

  4. windows cmd命令显示UTF8设置

    windows cmd命令显示UTF8设置   在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况 ...

  5. windows cmd 命令和 linux 命令

    windows cmd 命令和 linux 命令 常用的内部命令有md.cd.rd.dir.path.copy.type.edit.ren.del.cls.ver.date.time.prompt.常 ...

  6. SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法

    create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...

  7. Python实现Windows CMD命令行彩色输出

    #! /usr/bin/env python #coding=utf-8   import ctypes,sys   STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE ...

  8. Windows cmd 命令行基本操作

    Windows cmd 命令行基本操作 1. 进入到指定根目录 注意:不区分大小写 例如进入到 D 盘 2. 进入到指定的目录 例如 (如果目录文件名太长,可以使用 tab 键来自动补全.重复按可以进 ...

  9. Windows cmd命令

    运行操作 CMD命令锦集       1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个监测网络中DN ...

随机推荐

  1. MySQL For Windows Zip解压版安装

    前言 Windows 下 MySQL 有msi和zip解压安装版两种,而zip版只需解压并做简单配置后就能使用,我个人比较喜欢这种方式. 注意我们这里说的MySQL是指MySQL服务器,有很多初学的同 ...

  2. spring quartz 定时器时间格式设置

    "0/10 * * * * ?" 10秒执行一次 "0 0 12 * * ?"每天中午十二点触发"0 15 10 ? * *"每天早上10: ...

  3. PHP 7 vs HHVM 比较

    PHP 是最流行的用于 web 开发的脚本语言之一.PHP 的最新版本,PHP 7 在性能上做了很大的优化.不过,PHP 还有一个竞争对手 HHVM (HipHop Virtual Machine) ...

  4. requirejs的使用

    requirejs的优点: 1.防止在js的加载过程中,阻止页面的渲染: 2.可以引入多个js文件: 3.可以写出重复使用的js模块: 4.有效的防止命名的冲突,通过将变量分装在模块中的方式实现: r ...

  5. SpringBoot-Learning

    SpringBoot-Learning 本项目内容为Spring Boot教程程序样例. 作者博客:http://blog.didispace.com Spring Boot系列博文:http://b ...

  6. 转:永久解决火狐浏览器出现的flash版本更新问题

    发现问题: 1.找到火狐浏览器,并打开出现问题的页面. 2.点击火狐浏览器的"打开菜单"按钮,选择"附加组件"按钮. 3.在"搜索所有添加附件&quo ...

  7. CheckedComboBoxEdit 重置初始化值的方法

    CheckedComboBoxEdit ccbgb; ccbgb绑定方式ccbgb .Properties .DataSource =数据集; ccbgb.Properties.DisplayMemb ...

  8. Windows 下针对python脚本做一个简单的进程保护

    前提: 大家运行的脚本程序经常会碰到系统异常关闭.或被其他用户错杀的情况.这样就需要一个进程保护的工具. 本文结合windows 的计划任务,实现一个简单的进程保护的功能. 利用py2exe生产 ex ...

  9. CentOS上安装spark standalone mode(转载)

    原文链接 http://blog.csdn.net/chenxingzhen001/article/details/11072765 参考: http://spark.incubator.apache ...

  10. js 什么是变量的提升?