'C:\ Program'无法识别错误

der*_*ahc 19 windows cmd environment-variables

我最近尝试更改环境变量以设置javac.exe的路径(以及其他内容).它工作正常,突然间,我开始得到这个错误.例如,我声明了一个JAVA_HOME变量

C:\Program Files\Java\jdk1.7.0_25

之后,我补充说

%JAVA_HOME%\bin

到PATH变量,但这给了我一个错误:

"C:\ Program"不被识别为内部或外部命令,可操作命令或批处理文件.

这个错误使得它似乎遇到了"程序文件"中的空间问题.然而,这很奇怪,因为它暂时没有这么做,然后就开始了.此外,还有其他变量,其中的空格可以正常工作.我已经尝试删除变量并重新创建它,在JAVA_HOME周围放置引号(它转到正确的路径,但没有正确找到javac.exe).

关于我可能做什么的任何提示?

这是在Windows 7上.

编辑:

通过控制面板>高级系统设置>环境变量设置环境变量.通过在资源管理器窗口中复制我想要的文件夹的地址来设置变量的值.我将它添加到PATH环境变量中,方法是在前面的变量和末尾的分号之间添加一个空格,如下所示:

C:\Users\Demo_User_1\AppData\Roaming\npm; %JAVA_HOME%

其中JAVA_HOME变量定义如下:

C:\Program Files\Java\jdk1.7.0_25

我通过输入%JAVA_HOME%来通过命令提示符测试变量的值,这就是我得到"'C:\ Program'的结果错误无法识别..."

'set'的结果如下:

C:\Users\Demo_User_1>set
ALLUSERSPROFILE=C:\ProgramData
ANDROID_HOME=C:\Users\Demo_User_1\Desktop\Android\adt-bundle-windows-x86_64-2013
0717\sdk
APPDATA=C:\Users\Demo_User_1\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=DEMO_USER_1-HP
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\Demo_User_1
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_25
LOCALAPPDATA=C:\Users\Demo_User_1\AppData\Local
LOGONSERVER=\\DEMO_USER_1-HP
NUMBER_OF_PROCESSORS=4
OnlineServices=Online Services
OS=Windows_NT
Path=C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Clien
t\;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files
(x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;
C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program
Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\
x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Intel\I
ntel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Managem
ent Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engin
e Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Compone
nts\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\Wir
elessCommon\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files
 (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows
Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\
Tools\Binn\;C:\Program Files\nodejs\; C:\Users\Demo_User_1\Desktop\Android\adt-b
undle-windows-x86_64-20130717\sdk/platform-tools; C:\Users\Demo_User_1\Desktop\A
ndroid\adt-bundle-windows-x86_64-20130717\sdk\tools; %JAVA_HOME%; %ANT_HOME%/bin
; C:\Program Files\Java\jdk1.7.0_25\bin; C:\Users\Demo_User_1\AppData\Roaming\np
m; "%JAVA_HOME%"; ;C:\Users\Demo_User_1\Desktop\Android\adt-bundle-windows-x86_6
4-20130717\sdk/tools; C:\Users\Demo_User_1\Desktop\Android\adt-bundle-windows-x8
6_64-20130717\sdk/platform-tools
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PCBRAND=Pavilion
Platform=MCD
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=3a09
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\DEMO_U~1\AppData\Local\Temp
TMP=C:\Users\DEMO_U~1\AppData\Local\Temp
USERDOMAIN=Demo_User_1-HP
USERNAME=Demo_User_1
USERPROFILE=C:\Users\Demo_User_1
VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools
\
windir=C:\Windows
windows_tracing_flags=3
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log
Run Code Online (Sandbox Code Playgroud)

adh*_*dhg 28

另一个解决方案是这样做:C:\Program Files有一个简短的名字

C:\ PROGRA〜1

在窗户.

所以只需编写Progra~1而不是Program Files.{补充缺少'r'}

  • 从Windows 8开始,这似乎不再适用. (2认同)
  • 同样,对于 Program Files(x86),ProgramData 为 C:\Progra~2、C:\Progra~3 (2认同)

Adi*_*bar 22

好的,这使它更清晰.

这里有两个主要问题.

首先,你得到的原因'C:\Program' is not recognized...当然是因为它包含空格.您在PATH环境变量中引用它的事实与在提示符处解释%JAVA_HOME%的方式无关.你有两个选择.

  1. 在定义变量时引用它,即将JAVA_HOME设置"C:\Program Files\Java\jdk1.7.0_25"
  2. 当你调用它时引用它.键入"%JAVA_HOME%\bin"在提示符下.当然,你会得到"未被识别为内部或外部命令,可操作程序或批处理文件"错误,除非你用可执行文件结束路径(例如"%JAVA_HOME%\bin\javac.exe"),但你会看到这样抱怨'' C:\ Program Files\Java\jdk1.7.0_25"'而不是'C:\ Program'.

其次,您不能在路径中使用环境变量.你可以当你在命令提示符下设置路径使用环境变量.例如,

set PATH=%PATH%;%JAVA_HOME%
Run Code Online (Sandbox Code Playgroud)

会工作,但这是因为%JAVA_HOME%在命令行展开,PATH设置为结果.如果检查PATH的值,您将看到它以C:\ Program Files\Java\jdk1.7.0_25而不是%JAVA_HOME%结束.

此外,如果javac.exe位于bin子目录中,则需要将其包含在路径中,即添加;C:\Program Files\Java\jdk1.7.0_25\bin到路径中.

(顺便说一句,你在路径中有两个%JAVA_HOME%,并且在第二个之后有一个额外的分号.)