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

错误信息

在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常用命令大全
比如:
ipconfigpingnetstatcddirtelnetnetdel……

第二种是第三方软件的命令找不到(这些软件都是我们自己安装的),比如:
javamysqlpythonphpgitmavennodejsmsfconsole……

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

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

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

解决办法

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

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

点击右上角新建,依次添加以下两条环境变量:
C:\Windows
C:\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启动。

不需要由操作系统去根据javapath环境变量里面寻找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

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络安全—白菜菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值