Windows cmd命令搜索顺序
一、在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命令搜索顺序的更多相关文章
- Windows CMD命令大全(转)
Windows CMD命令大全 命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行 ...
- 【转】Python实现修改Windows CMD命令行输出颜色(完全解析)
用Python写命令行程序的时候,单一的输出颜色太单调.其实我们可以加些色彩,比如用红色表示警告,绿色表示结果正常等.网上也有几篇类似的帖子,但是没有把问题讲清楚,贴的代码也不是太清晰.这里,对Win ...
- Windows —— cmd命令
Windows —— cmd命令 cd 命令 进入cmd的默认目录:默认为 C:\Users\Administrator> 进入文件夹:cd 文件夹名 返回上一层目录:cd.. 切换目录: 清屏 ...
- windows cmd命令显示UTF8设置
windows cmd命令显示UTF8设置 在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况 ...
- windows cmd 命令和 linux 命令
windows cmd 命令和 linux 命令 常用的内部命令有md.cd.rd.dir.path.copy.type.edit.ren.del.cls.ver.date.time.prompt.常 ...
- SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法
create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...
- Python实现Windows CMD命令行彩色输出
#! /usr/bin/env python #coding=utf-8 import ctypes,sys STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE ...
- Windows cmd 命令行基本操作
Windows cmd 命令行基本操作 1. 进入到指定根目录 注意:不区分大小写 例如进入到 D 盘 2. 进入到指定的目录 例如 (如果目录文件名太长,可以使用 tab 键来自动补全.重复按可以进 ...
- Windows cmd命令
运行操作 CMD命令锦集 1. gpedit.msc-----组策略 2. sndrec32-------录音机 3. Nslookup-------IP地址侦测器 ,是一个监测网络中DN ...
随机推荐
- JQuery 插件之Ajax Autocomplete(ajax自动完成)搜索引擎自动显示下拉框
平时用百度,谷歌搜索的时候 会有一个下 拉列表进行提示 这是一个非常好的功能 本文要介绍的这个JQuery 插件 名叫Ajax Autocomplete 顾名思义 ajax 也就是用ajax的方式获取 ...
- 在spring框架中配置Quartz定时器发生错误: class org.springframework.scheduling.quartz.JobDetailBean has interface org.quartz.JobDetail as sup
这是由于spring和Quartz的不兼容性造成的.我的spring是4.0.2,但是Quartz是2.2.3的,换了一个1.8版本的Quartz就解决问题了.
- Druid Monitor监控JavaSE,杀cmd端口进程
1.需要在启动命令添加相关jvm参数 -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname -Dcom.sun.management.jm ...
- jQuery实现鼠标拖动改变Div高度
最近项目中需要在DashBoard页面做一个事件通知栏,该通知栏固定位于页面底部,鼠标拖动该DIV实现自动改变高度扩展内容显示区域. 以下是一个设计原型,基于jQuery实现,只实现了拖动效果,没有做 ...
- RadGrid使用技巧:从RadGrid获取绑定的值
本文主要介绍从RadGrid获取绑定的值,仅适用于Telerik RadControls for asp.net ajax. 获取方式 RadGrid把绑定的值存储在VIewState中,即使View ...
- spark 特殊函数
private var seed: Long = System.nanoTime()//返回最准确的可用系统计时器的当前值,以毫微秒为单位 require(storageLevel != Storag ...
- IDEA内存溢出问题:
-Xms1024m -Xmx1024m -XX:MaxPermSize=512m 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解 ...
- js类型转化
1. == 是会进行类型转换再进行判断的. true是转换成1,false是转换成0 然后再进行判断 == true false == true true === false false == fal ...
- js中var self=this的解释
每个函数在定义被ECMAScript解析器解析时,都会创建两个特殊的变量:this和arguments,换句话说,每个函数都有属于自己的this对象,这个this对象是在运行时基于函数的执行环境绑定的 ...
- 史航416第11次作业&总结
作业1:冒泡排序 #include <stdio.h> ],int n); int main() { ],n,i; printf("输入一个整数n:"); scanf( ...