cmd命令行提示:xxx不是内部或外部命令,也不是可运行程序 您所在的位置:网站首页 dos文件取名规则是什么意思呀 cmd命令行提示:xxx不是内部或外部命令,也不是可运行程序

cmd命令行提示:xxx不是内部或外部命令,也不是可运行程序

2024-07-11 20:58| 来源: 网络整理| 查看: 265

错误信息

在cmd里面运行安装的软件,提示“不是内部或外部命令,也不是可运行程序”

例如: mysql -uroot -p123456

ipconfig

报错原因

当操作系统提示:“xxx不是内部或外部命令,也不是可运行程序”的时候,说明它找不到xxx.exe这个程序在哪个位置。

小知识:在Windows操作系统,程序的.exe可以省略,所以: cmd运行ipconfig命令 —— 意思是找到并运行ipconfig.exe cmd运行mysql命令 —— 意思是找到并运行 mysql.exe 以此类推,所有的命令,都对应着一个.exe文件。

注意事项

1、注意:修改了环境变量,要重新打开cmd窗口才能生效 2、如果使用了相对路径: 举例1:%JAVA_HOME%设置为D:\jdk8(此处没有斜杠),path添加%JAVA_HOME%\bin(此处有斜杠),一定要注意分隔符不要重复。 举例2:%JAVA_HOME%设置为D:\jdk8\ (此处有斜杠),后面path添加就必须是%JAVA_HOME%bin(此处没有斜杠) 否则拼接出来的路径是错误的。少了斜杠或者多了斜杠都不行。 3、分号;仅仅是用来分隔多个值用的(比如path里面有很多个值),单个变量只有一个值的时候,千万不要在末尾加;

情况判断

错误分成两种情况,第一种情况是windows系统自带的命令找不到(这个是不正常的,因为默认情况下都可以使用,说明误删了环境变量)。参考:Windows常用命令大全 比如:ipconfig、ping、netstat、cd、dir、telnet、net、del……

第二种是第三方软件的命令找不到(这些软件都是我们自己安装的),比如:java、mysql、python、php、git、maven、nodejs、msfconsole……

这两种的解决办法是不一样的。

第一种情况:系统命令不存在

原因:系统环境变量被误删除

解决办法

点击电脑左下角Windows徽标,输入path,打开环境变量配置

找到系统变量里面的Path,进入编辑

点击右上角新建,依次添加以下两条环境变量:C:\WindowsC:\Windows\system32

如图所示:

注意:修改了环境变量,要重新打开cmd窗口才能生效

第二种情况:第三方软件命令不存在

原因:exe软件的路径没有添加到path中

解决办法

在path里面添加这个exe的路径即可。注意是添加路径,不是添加程序地址。注意:修改了环境变量,要重新打开cmd窗口才能生效

举例1:E:\dev_runApp\jdk1.8.0_74\bin 这个路径面有java.exe,把路径添加到path以后可以使用java命令。 举例2:‪C:\Program Files\Python39 这个路径里面有python.exe,把路径添加到path以后可以使用python命令。 举例3:E:\dev_runApp\mysql-5.7.28-winx64\bin 这个路径里面有mysql.exe,把路径添加到path以后可以使用mysql命令。

总结

也就是说,如果你想要让xxx命令在cmd可以正常使用,必须要把xxx.exe的路径添加到path中,系统命令也是一样。

我们可以使用everything软件搜索这个提示不是内部或者外部命令的程序路径,添加到path即可。

补充知识1:路径的顺序

如果有多个python版本,比如python2和python3(程序名字都是python.exe),可以都添加进去吗?到时候运行的是哪个?

这个时候是以路径的顺序为准的,哪个路径在前面,哪个就生效。

没有必要删除只保留其中一个。

使用“上移”、“下移”功能来改变顺序,就可以让排在前面的生效。

另一种做法:修改程序名

修改程序名字,比如python2.7的python.exe改成python2.exe,python3.9的python.exe改成python3.exe。 这样的话命令就区分开了。

cmd里面使用python2命令,代表打开python2版本的程序,使用python3命令,代表打开python3版本的程序(在kali操作系统里面,命令就是这样使用的)。

补充知识2:以程序全路径代替程序名

如果需要同时使用java 8和java 11,有的软件依赖java 8,有的软件依赖java 11,环境变量有优先级,就算多个都添加也只有一个生效,怎么办?

在这种情况,我们不再使用java这个命令来代替位于某个路径的java.exe程序,而是直接指定需要使用的版本的java.exe文件的地址。

举例1 给burp指定Java版本

现在环境变量的java版本是java 11。我们要使用java 18启动最新的Burp Suite。 编写.bat脚本文件,使用程序的绝对路径启动,不再使用程序名称: 编写的start-burp.bat内容:

E:\jdk-18.0.2.1\bin\java -jar BurpLoaderKeygen.jar

这里就直接指定了E:\jdk-18.0.2.1\bin\java文件的位置(.exe被省略了),而不是使用java -jar BurpLoaderKeygen.jar启动。

不需要由操作系统去根据java到path环境变量里面寻找java.exe的路径,也就不存在版本混淆的问题。

举例2 给tomcat指定Java版本

现在环境变量的java版本是java 11。我们需要使用java 8启动tomcat-8.0.22。

在apache-tomcat-8.0.22\bin\startup.bat开头加上一句话(加在setlocal后面)

SET JAVA_HOME=E:\dev_runApp\jdk1.8.0_74

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有