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 ...
随机推荐
- 重置zend studio 默认设置的方法
转载自:http://www.zendstudio.net/archives/reset-the-zend-studio-settings/ 这个方法类似于手机的"恢复出厂设置"的 ...
- 执行Python "/bin/usr/python: bad interpreter: No such file or directory" 错误
今天在电脑上写了一个Python脚本,写好之后用ftp传上去,然后执行/var/www/cron.py,结果报错,/bin/usr/python: bad interpreter: No such f ...
- Nginx开启GZIP来压缩网页
HTTP协议上的GZIP编码是一种用来改进web应 用程序性能的技术.大流量的WEB站点常常使用GZIP压缩技术来让用户感受更快的速度.这一般是指WWW服务器中安装的一个功能,当有人来访问这个服务器中 ...
- asp.net mvc return file result
asp.net mvc返回文件: public ActionResult ExportReflection(string accessToken) { var reflections = GetCms ...
- Lucene 工作原理 之倒排索引
1.简介 倒排索引源于实际应用中需要根据属性的值来查找记录.这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址.由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排 ...
- android SurfaceView中播放视频 按视频的原始比例播放
OnPreparedListener mediaPlayerOnPreparedListener = new OnPreparedListener() { @Override public void ...
- Spring里PropertyPlaceholderConfigurer类的使用
1. PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是 BeanFactoryPostProcessor接口的一个实现.PropertyPlaceho ...
- Shell 的变量功能
搜寻路径PATH(系统预设变量) 执行命令时,系统透过PATH得路径顺序搜寻指令,如果再搜寻完后还找不到该指令,就会打印错误讯息[command not fount]. 环境变量 进入shell之 ...
- windbg学习---.browse打开一个新的command 窗口
.browse r eax .browse <command>将会显示新的命令浏览窗口和运行给出的命令
- I2C总线和S5PV210的I2C总线控制器
一.什么是I2C通信协议? 1.物理接口:SCL + SDA (1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道. (2)SDA(serial ...