Windows 8 环境变量在run中工作,但在cmd中不工作
我正在尝试建立一个phonegap android应用程序(这是附带的,只是一些介绍),还有一个名为android.bat的批处理文件,我需要能够在全球范围内运行。如果我把“android”放在cmd中,它应该运行批处理文件。我在“path”环境变量中设置了它,重新启动了cmd并重新启动了计算机,但没有用-将“android”放在cmd中会导致“android不被识别为内部或外部命令”等 非常奇怪的是,在设置环境变量之前,从Run运行“android”不起作用,而现在它起作用了。因此,Windows显然将其识别为有效的全局变量。如果我将完整路径放入cmd,它就可以正常工作 另外,当我在不同的位置创建另一个批处理文件并尝试相同的操作时,会得到相同的结果 所以我被难住了。有什么想法吗?你在cmd中“放置”android是什么意思?您设置了什么环境变量-设置为什么 要从提示符运行Windows 8 环境变量在run中工作,但在cmd中不工作,windows-8,environment-variables,Windows 8,Environment Variables,我正在尝试建立一个phonegap android应用程序(这是附带的,只是一些介绍),还有一个名为android.bat的批处理文件,我需要能够在全球范围内运行。如果我把“android”放在cmd中,它应该运行批处理文件。我在“path”环境变量中设置了它,重新启动了cmd并重新启动了计算机,但没有用-将“android”放在cmd中会导致“android不被识别为内部或外部命令”等 非常奇怪的是,在设置环境变量之前,从Run运行“android”不起作用,而现在它起作用了。因此,Windo
android.bat
,您需要确保android.bat
位于路径中的一个目录中
要查看您的路径
,只需在提示下输入路径
。您将看到一个以分号分隔的目录列表。将ANDOID.BAT
放入这些目录中的任何一个,或者添加一个新目录(c:\belfry很流行)并将其包含在路径中
话虽如此,被CMD
检查的第一个目录是当前目录,因此如果ANDROID.bat
在您的当前目录中,即使它不在路径上的目录中,那么ANDROID
将作为一个命令运行,这样我就明白了一切
1-有一个批处理文件(android.bat/cmd)
2-使用完整路径直接调用它,它运行时不会出现问题
3-从运行对话框调用它,它运行时没有问题(实际上,它的工作方式与第2点相同)
4-批处理文件所在的目录包含在路径中
5-从另一个目录调用它不起作用
6-其他批处理文件也会发生同样的情况
有两种可能性
Path变量包含无效或未正确引用/转义字符,系统在Path中查找程序时遇到问题
或.CMD或.BAT不包含在PATHEXT变量中。它列出了调用程序时在每个路径目录中检查的扩展名
在命令行中,键入SET PATH
,检查这两个选项中的任何一个是否正确
编辑
这些选项似乎没有找到问题所在。让我们试试别的
在sdk中查找文件sdk\tools\lib\Find_java.bat
。更换管路(大约为26和32)
到
然后再次尝试运行android.bat很抱歉这么说,但是,需要放在path中的是android批处理文件所在的文件夹。这就是你所做的吗?是的。要详细说明,这是路径C:\Users\david_000\AndroidSDK\adt-bundle-windows-x86_64-20131030\sdk\tools中的确切文本。这就是批处理文件所在的位置。它位于路径中的一个目录中-我已将该目录添加到用户的路径中。更改PATH
仅影响CMD
的当前实例。在注册表中更改路径
只会影响CMD
的未来实例,而不会影响已经运行的实例。也许这可以解释你的观察结果。因此,当我改变变量时,我总是重新启动CMD,因为我在过去注意到了这一点。基本上是对的。对于3,当我从run dialog调用它时,我只是将“android”放在对话框中,这是有效的,因此它可以从路径中识别它。它在那里-。BAT是列表中的扩展之一。而且,我只是试了一下设定的路径,重复了一下,它就找到了。我不确定是否有一个批处理文件示例可以在System32中使用,以证明这是否是我做错的事情(可能是这样)。@user2564511,否,用于第3点。应用程序不需要位于路径中。我一直在想…它不一定要在路径上,但正如我所说的,直到我把它放在路径上,它才起作用。很明显,它认为路径是有效的。我认为您编辑的解决方案可能假设的版本与我得到的版本不同-我的默认版本如下:对于/f“delims=“%%a in”(“%$dps0\find_java.exe”-s”)do set java_exe=%%a;对于(“%$dps0\find_java.exe“-s-w”)中的/f“delims=“%%a”,请设置javaw_exe=%%a
for /f %%a in ('%~dps0\find_java.exe -s') do set java_exe=%%a
for /f %%a in ('%~dps0\find_java.exe -s -w') do set javaw_exe=%%a
for /f %%a in ('"%~dps0\find_java.exe" -s') do set java_exe=%%a
for /f %%a in ('"%~dps0\find_java.exe" -s -w') do set javaw_exe=%%a