2014-11-03 225 views
-1

好的伙计感谢您尝试调试我。使用bat运行java脚本,“java不被识别为内部命令或外部命令”

我有一个Java脚本,我通常用这个CMD

javac -classpath jxl.jar;..C:\3DWIP\src\; GenerateExcel.java 

然后我用这个CMD运行编译。

java -classpath jxl.jar;..C:\3DWIP\src\; GenerateExcel Model.STEPFILE 

jxl.jar作为JExcelApi的写入Excel文件和C:\ 3DWIP的\ src \是我的主要()将文件夹。

这个效果很好。

我的问题是,我有一个蝙蝠脚本,在某些时候应该调用javac和java,例如当它调用下面的行 java -classpath jxl.jar; .. C:\ 3DWIP \ SRC \; GenerateExcel Model.STEPFILE

我得到着名的“java不被识别为内部命令或外部命令”。

这是我的系统路径变量

C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Java\jdk1.7.0_67\bin;C:\3DWIP\src;C:\Program Files\Java\jdk1.7.0_67\lib\jexcelapi\jxl.jar;%JAVA_HOME%\bin 

这是我的蝙蝠脚本

@echo off 

set INPUTFILENAME=%~1 
set INPUTFILENAME=%INPUTFILENAME:C:\GENERATOR\=% 
set CTWORKFLD=C:\GENERATOR\ 
set CTINSTDIR=C:\coretechnologie2014\evolution64 
set CTSCRIPTFLD=C:\coretechnologie2014\evolution64\scripts 
set CTLIBPATH=C:\coretechnologie2014\evolution64\lib64 
set EVOLPATH=%CTINSTDIR% 
set path=C:\Program Files\Java\jdk1.7.00_67\bin;%EVOLPATH%;%CTLIBPATH%;%CTLIBPATH%\lib3dx\intel_a\code\bin;%UGII_ROOT_DIR%; 

rmdir %CTWORKFLD%\out /s /q 

mkdir %CTWORKFLD%\out 

echo Processing file: %INPUTFILENAME% 

echo Exporting Images and Data 
"%CTINSTDIR%\evolution.exe" -batch "%CTSCRIPTFLD%\Compute_Properties_and_views.scp"  "%CTWORKFLD%\%INPUTFILENAME%" Evolution Step "%CTWORKFLD%\out\%INPUTFILENAME%" "%CTWORKFLD%\out\%INPUTFILENAME%.stp.log" 

echo Exporting Done! 

echo Generating Excel File 

chdir /d C:\3DWIP\src 
::javac -classpath C:\Program Files\Java\jdk1.7.0_67\bin;..jxl.jar;..C:\3DWIP\src\; GenerateExcel.java 
java -classpath C:\Program Files\Java\jdk1.7.0_67\bin;..jxl.jar;..C:\3DWIP\src\; GenerateExcel %INPUTFILENAME% 


echo Closing 1000 secs... 
"%windir%\system32\timeout.exe" /t 1000 /nobreak 
echo Job Done! 


@echo 
@echo 

请帮助我duno该怎么办了。

+0

您是否设置了%JAVA_HOME%?如果是,你检查过了吗? – 2014-11-03 20:42:03

+2

该消息表示Windows无法找到'java.exe'。你的'.bat'脚本改变了'PATH'。显然'java.exe'不存在于该路径上的任何目录中,但确实存在于之前使用的'PATH'中的某个目录中。如果'java.exe'确实存在于新PATH中的某个目录中,请澄清。 – ajb 2014-11-03 20:46:13

+0

尝试使用'C:\ Program Files(x86)\ Java \ jdk _ * \ bin \ java.exe args',直接引用java.exe路径或包含jre。 – TameHog 2014-11-03 20:51:51

回答

0

的问题可能只是在你的SET PATH命令一个错字:它是指 C:\Program Files\Java\jdk1.7.00_67,而你的脚本的其余部分指的是 C:\Program Files\Java\jdk1.7.0_67。但我想解释一般如何添加东西到PATH

在Windows中,SET PATH=将设置搜索.exe文件的目录列表。 (在你的情况下,它正在寻找java.exe。)但是,这样做并不会自动保留以前的PATH中的目录。这是一个非常简单的命令 - 它只是将变量设置为你给它的字符串。

添加目录到PATH,同时保持以前的目录,使用如下命令

SET PATH=<dir1>;<dir2>;<dir3>;%PATH% 

SET PATH=%PATH%;<dir1>;<dir2>;<dir3> 

你使用哪一种会有所作为,如果有一个.exe文件在多个路径目录中,因为Windows将查看目录以查找要查找的.exe文件。在很多情况下,顺序并不重要。

0

如果您正在使用Windows 7或8,这些步骤将设置永久性Java类路径。 (i)打开你的“系统属性”对话框。点击左侧窗格中的“高级系统设置”选项。 (ii)在以下窗口中,导航到“高级”选项卡。您现在将看到“环境变量...“按钮,单击它。

(III)在另一个下面的窗口,如果你找到一个‘路径’变量,只需双击它。

(四)在‘编辑系统变量’窗口中,键入您的Java bin目录路径,对于大多数情况下,“C:\ Program Files \ Java \ jdk1.7.0_45 \ bin;”或者你也可以输入“%ProgramFiles%\ Java \ jdk1.7.0_45 \ bin;”。在Java目录中,因为版本不同,所以请确保它注意路径末尾的分号,因为它是必须的,并且如果Java类路径在Path变量中的另一个路径后面,则将分号放在它的前面(v)现在,点击“确定”关闭所有打开的窗口。

这些步骤比在“命令行”上做得更有效,因为只要打开“命令提示符”,命令行就会保留这些设置。

相关问题