Batch file 批处理IF语句

Batch file 批处理IF语句,batch-file,Batch File,我需要的是,如果键入“c”的人应该在c++中运行示例, 如果person类型为“j”,则应运行Java示例 但是: 1-当我输入“c”或“j”时,他不识别,如果我输入“j”,他会执行, 如果我选择“c”,也会使executeC不输入此executeJava。然后改为一个数值,如果我输入3-executeC,如果我输入4-executeJava。 因此,如果我键入3,它将访问目录C:\Portico\Portico-1.0.2\examples\cpp\cpp13并处理executeC, 2-如果

我需要的是,如果键入“c”的人应该在c++中运行示例, 如果person类型为“j”,则应运行Java示例

但是:

1-当我输入“c”或“j”时,他不识别,如果我输入“j”,他会执行, 如果我选择“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

似乎您想输入
J
C
进行分支,但您测试的是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

c/j/3/4开关正在工作,因为它做不同的事情,所以这些标签是正常的。但是命令
C:\Portico\Portico-1.0.2\examples\java\hla13\java-hla13.jar
没有任何作用。它是否直接从命令提示符下工作?文件夹正确吗?你的问题很不清楚。你是在问IF语句(如标题所示),如果是,这只是你先前问题的重复:或者,你是在问如何执行jar文件,在这种情况下,请看这里:请找出你确切的问题是什么,拿出一个简单的例子来说明问题,然后发布。不要把你的整个程序都扔给我们,然后说“不行,帮我想想。”