0

3 つのバッチ ファイルを作成する必要がありました。2 つは環境変数を構成し、もう 1 つは例を実行します。

次に、confvarsC.bat (C++ 環境変数) と confvarsJ.bat (Java 環境変数) があります。次に、次のことを行う executePortico.bat を作成しました。java_home と rti_home をテストし、環境変数のファイルを呼び出します。しかし、「c」と入力する人が confvarsC.bat を呼び出して C++ で例を実行する必要がある場合、「j」と入力する人が confvarsJ.bat を呼び出して Java の例を実行する必要がある場合は、それが必要です。

私がしたことを見てください:

@echo off

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

set IMP=portico

rem ################################
rem # check command line arguments #
rem ################################
:checkargs
if "%0" == "" goto usage
if "%1" == "" goto usage


rem #######################
rem # test for JAVA_HOME  #
rem #######################
if "%JAVA_HOME%" == "" goto nojava
goto rtihometest

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

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

if "%0" == "c" goto execC
if "%0" == "j" goto execJ
goto finish

:execC
call C:\Arquivos de programas\Portico\portico-1.0.2\etc\confvarsC.bat
if not "%RTI_HOME%" == "" goto execute

:execJ
call C:\Arquivos de programas\Portico\portico-1.0.2\etc\confvarsJ.bat
if not "%RTI_HOME%" == "" goto execute


############################################
### (target) execute #######################
############################################
:execute
SHIFT
set PATH=%JAVA_HOME%\jre\bin\client;%RTI_HOME%\bin;%PATH%
set RTI_FEDDIR=C:\Arquivos de programas\Portico\portico-1.0.2\examples\cpp\cpp13
set EXEC = "C:\Arquivos de programas\Portico\portico-1.0.2\examples\cpp\cpp13"

if "%0" == "m" goto exec1

:exec1
echo %EXEC%%1%IMP%.exe
pause
%EXEC%%1%IMP%.exe %2
goto finish

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

:err
echo Terminated - Error
goto end

:finish
echo Terminated - Normal

:end

私はこれをしました、私のコードを見てください:しかし、私は問題があります.Javaの例を実行しようとすると、彼はexecuteJavaに入らず、常にexecuteCに入ります.

私のコマンドプロンプトで見てください:

C:\Portico\portico-1.0.2\exec>executePortico.bat java-hla13 Por favor escolha a linguagem (J)ava または (C)++: j C:\Portico\portico-1.0.2\examples\cpp \cpp13\java-hla13.exe Pressione qualquer tecla para continuar. . . 「「C:\Portico\portico-1.0.2\examples\cpp\cpp13\java-hla13.exe」」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。終了 - 通常

Java の例は次のディレクトリにあります: C:\Portico\portico-1.0.2\examples\java\hla13

@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%=="C" goto execC
if %language%=="J" goto execJ



rem #######################
rem # test for JAVA_HOME  #
rem #######################
if "%JAVA_HOME%"=="" goto nojava
goto rtihometest

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

goto usage



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


echo EU aqui no executeC

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


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


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


################################################
### (target) execute C++ #######################
################################################
: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


#################################################
### (target) execute Java #######################
#################################################
: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
4

2 に答える 2

2

では:checkargs%0には常に何かが含まれます-それはバッチファイルの名前です-その値をテストする必要はありません

%1は最初のパラメーターであるため、%1を%0ではなく c または j と:rtihometest比較する必要があります。

では:execC、2 番目のテストの後にどこにもジャンプしないため、:execJも実行されます。

では:execJ、2 回目のテスト以降はどこにもジャンプしないため:execute、テストの結果に関係なく実行されます。

于 2013-02-06T18:02:32.950 に答える