使用bat运行java脚本,“java不被识别为内部命令或外部命令”

时间:2014-11-03 20:38:56

标签: java batch-file cmd

好的伙计感谢您试图调试我。

我有一个java脚本,我通常用这个cmd编译

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

然后我用这个cmd运行它。

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

jxl.jar是用于编写EXCEL文件的JExcelAPI,而C:\ 3DWIP \ src \是我的Main()所在的文件夹。

这很有效。

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

我得到了着名的#34; 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再做什么。

2 个答案:

答案 0 :(得分: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文件。在许多情况下,订单无关紧要。

答案 1 :(得分:0)

如果您使用的是Windows 7或8,那么这些步骤就是将Java类路径设置为永久性的。

(i)打开“系统属性”对话框。单击左侧窗格中的“高级系统设置”选项。

(ii)在以下窗口中,导航至“高级”选项卡。您现在将看到“环境变量...”按钮并单击它。

(iii)在下面的另一个窗口中,如果找到“路径”变量,只需双击即可。

(iv)在“编辑系统变量”窗口中,键入Java bin目录路径。对于大多数情况,“C:\ Program Files \ Java \ jdk1.7.0_45 \ bin;”或者您也可以输入“%ProgramFiles%\ Java \ jdk1.7.0_45 \ bin;”。由于版本不同,路径可能会在Java目录中发生更改。所以,确保它。请注意路径末尾的分号,如果Java类路径位于Path变量中的另一个路径之后,则将分号放在其前面。

(v)现在,单击“确定”关闭所有打开的窗口。

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