2013-02-20 101 views
0

如果人员类型“j”应该运行Java示例,那么如果键入“c”的人员应该在C++中运行示例,则需要 。批量--IF语句

但是:当我输入“c”或“J”,如果我“J”型

1不承认,他让executeC, 如果我选择“C”也使得executeC没有进入这个executeJava。然后改为数值,如果我输入3 - executeC,如果我输入4 - executeJava。 因此,如果我输入3,它将访问目录C:\ Portico \ portico-1.0.2 \ examples \ cpp \ cpp13并处理executeC, 2如果我输入4,它将访问目录C:\ Portico \ portico-1.0。 2 \ examples \ java \ hla13,但不运行,只是结束。

看看我在命令提示符下

C:\Portico\portico-1.0.2\exec>executePortico.bat main 
Choose (J)ava or (C)++: 3 
C:\Portico\portico-1.0.2\examples\cpp\cpp13\main.exe 
Pressione qualquer tecla para continuar. . . 
Created Federation 
Joined Federation as exampleFederate 
Successfully registered sync point: ReadyToRun 

C:\Portico\portico-1.0.2\exec>executePortico.bat java-hla13 
Choose (J)ava or (C)++: 4 
C:\Portico\portico-1.0.2\examples\java\hla13\java-hla13.jar 
Pressione qualquer tecla para continuar. . . 
Terminated - Normal 
C:\Portico\portico-1.0.2\exec> 

确实看到了我的代码,请:

@echo off 

rem ########################### 
rem # implementation/version # 
rem ########################### 


rem ################################ 
rem # check command line arguments # 
rem ################################ 
:checkargs 


if "%0"=="" goto usage 
if "%1"=="" goto usage 

set /p language=Por favor escolha a linguagem (J)ava or (C)++: 

if %language%==3 goto execC 
if %language%==4 goto execJ 



rem ####################### 
rem # test for JAVA_HOME # 
rem ####################### 
set JAVA=java 
set JAVAC=javac 
set JAR=jar 
if "%JAVA_HOME%"=="" goto nojava 

set JAVA="%JAVA_HOME%\bin\java" 
set JAVAC="%JAVA_HOME%\bin\javac" 
set JAR="%JAVA_HOME%\bin\jar" 
goto rtihometest 

:nojava 
echo ERROR Your JAVA_HOME environment variable is not set! 

goto usage 


rem ####################### 
rem # test for RTI_HOME # 
rem ####################### 
:rtihometest 


:execC 
call C:\Portico\portico-1.0.2\etc\confvarsC.bat 
if "%RTI_HOME%"=="" goto nortihome 
if not "%RTI_HOME%"=="" goto executeC 

goto End 


:execJ 
call C:\Portico\portico-1.0.2\etc\confvarsJ.bat 
if "%RTI_HOME%"=="" goto nortihome 
if not "%RTI_HOME%"=="" goto executeJava 

goto End 


:nortihome 
echo ERROR Your JAVA_HOME environment variable is not set! 
goto usage 


############################################ 
### (target) execute ####################### 
############################################ 
:executeC 

set PATH=%JAVA_HOME%\jre\bin\client;%RTI_HOME%\bin;%PATH% 
set RTI_FEDDIR=C:\Portico\portico-1.0.2\examples\cpp\cpp13 
set EXEC=C:\Portico\portico-1.0.2\examples\cpp\cpp13\ 

echo %EXEC%%1.exe 
pause 
"%EXEC%%1.exe" 

goto finish 


:executeJava 


set PATH=PATH=%RTI_HOME%\include\ng6;%RTI_HOME%\lib;%RTI_HOME%\bin;%JAVA_HOME%\bin;%PATH% 
set ClassPath=%RTI_HOME%\lib\portico.jar 
set RTI_FEDDIR=C:\Portico\portico-1.0.2\examples\java\hla13 
set EXECUTA=C:\Portico\portico-1.0.2\examples\java\hla13\ 

echo %EXECUTA%%java-hla13.jar 
pause 
"%EXECUTA%%java-hla13.jar" 

goto finish 



:usage 


echo usage: executePortico.bat [model] [nome modelo] 
goto err 

:err 
echo Terminated - Error 
goto end 

:finish 
echo Terminated - Normal 

:end 
+0

c/j/3/4交换机正在工作,因为它做了不同的事情,所以这些标签都没问题。但命令'C:\ Portico \ portico-1.0.2 \ examples \ java \ hla13 \ java-hla13.jar'没有做任何事情。它是否直接从命令提示符运行?文件夹是否正确? – 2013-02-20 14:28:34

+0

你的问题很不清楚。你是在问关于IF语句(如标题中所示),如果是这样,这只是你早期问题的一个副本:http://stackoverflow.com/questions/14733516/batch-files-checking-arguments或者,你问关于如何执行jar文件,在这种情况下请看这里:http://stackoverflow.com/questions/1238145/how-to-run-a-jar-file – Vicky 2013-02-21 09:55:46

+0

请找出你确切的问题是什么,拿出一个简单的例子,显示问题,并张贴。不要把你的整个程序转移到我们身上,并说“这行不通,请帮我解决。” – librik 2013-10-02 01:52:52

回答

0

似乎要进入JC分支,但你正在测试的3和4.他们都会失败,代码会快乐地继续下去,因为没有其他逻辑来处理不正确的输入。试试这个细分市场:

if "%~0"=="" goto usage 
if "%~1"=="" goto usage 

set /p "language=Por favor escolha a linguagem (J)ava or (C)++: " 

if /i "%language%"=="C" goto execC 
if /i "%language%"=="J" goto execJ 
echo incorrect input - quitting 
goto :EOF