他のバッチファイルを呼び出した後、バッチプロセスが毎回壊れるという問題があります。バッチ ファイルは、IBM Rhapsody から make プロセスを実行するために使用されます。Rhapsody からの呼び出しを Visual Studio ツールに変換します。したがって、さまざまな設定を行った後、バッチから nmake が呼び出されます。
スクリプトは完全に私が書いたものではなく、x86 と x64 の両方の Windows アーキテクチャ バージョンで実行できるようにテーマを調整するだけです。最初のスクリプト (vs2005_make.bat) は Rhapsody から呼び出され、「call」ステートメントまで実行されます。2 番目のスクリプト (Vcvars_VisualStudio2005.bat) が最後まで実行されます。しかし、最初のスクリプトは再開されません。この時点で、プロセスはエラー メッセージなしで中断されます。
私はバッチ ファイルにあまり詳しくありません。バッチ ファイルで単純なコンソール コマンド以上のものを作成するのはこれが初めてです。ですから、必要なすべての情報を提供したことを願っています。それ以外の場合はお尋ねください。
ここで開始スクリプト (vs2005_make.bat):
:: parameter 1 - Makefile which should be used
:: parameter 2 - The make target mark
@echo off
IF "%2"=="" set target=all
IF "%2"=="all" set target=all
IF "%2"=="build" set target=all
IF "%2"=="rebuild" set target=clean all
IF "%2"=="clean" set target=clean
set RegQry="HKLM\Hardware\Description\System\CentralProcessor\0"
REG.exe Query %RegQry% > checkOS.txt
Find /i "x86" < CheckOS.txt > StringCheck.txt
IF %ERRORLEVEL%==0 (
set arch=x86
) ELSE (
set arch=x64
)
call "%ProgramFiles%\IBM\Rhapsody752\Share\etc\Vcvars_VisualStudio2005.bat" %arch%
IF %ERRORLEVEL%==0 (
set makeflags=
nmake /nologo /S /F %1 %target%
)
del checkOS.txt
del StringCheck.txt
exit
ここでは、呼び出されたスクリプト (Vcvars_VisualStudio2005.bat):
:: param 1 - Processor architecture
@echo off
ECHO param 1 = %1
IF %1==x86 (
SET ProgrammPath=%ProgramFiles%
) ELSE IF %1==x64 (
SET ProgrammPath=%ProgramFiles(x86)%
) ELSE (
ECHO Unknowen architectur
EXIT /B 1
)
SET VSINSTALLDIR="%ProgrammPath%\Microsoft Visual Studio 8\Common7\IDE"
SET VCINSTALLDIR="%ProgrammPath%\Microsoft Visual Studio 8"
SET FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
SET FrameworkVersion=v2.0.50727
SET FrameworkSDKDir="%ProgrammPath%\Microsoft Visual Studio 8\SDK\v2.0"
rem Root of Visual Studio common files.
IF %VSINSTALLDIR%=="" GOTO Usage
IF %VCINSTALLDIR%=="" SET VCINSTALLDIR=%VSINSTALLDIR%
rem
rem Root of Visual Studio ide installed files.
rem
SET DevEnvDir=%VSINSTALLDIR%
rem
rem Root of Visual C++ installed files.
rem
SET MSVCDir=%VCINSTALLDIR%\VC
SET PATH=%DevEnvDir%;%MSVCDir%\BIN;%VCINSTALLDIR%\Common7\Tools;%VCINSTALLDIR%Common7 \Tools\bin\prerelease;%VCINSTALLDIR%\Common7\Tools\bin;%FrameworkSDKDir%\bin;%FrameworkDir%\%FrameworkVersion%;%PATH%;
SET INCLUDE=%MSVCDir%\ATLMFC\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\PlatformSDK\include\gl;%MSVCDir%\PlatformSDK\include;%FrameworkSDKDir%\include;%INCLUDE%
SET LIB=%MSVCDir%\ATLMFC\LIB;%MSVCDir%\LIB;%MSVCDir%\PlatformSDK\lib;%FrameworkSDKDir%\lib;%LIB%
GOTO end
:Usage
ECHO. VSINSTALLDIR variable is not set.
ECHO.
ECHO SYNTAX: %0
GOTO end
:end
これがコンソール出力です。ここで理解できず、非常に疑わしいのは、最初のスクリプトの「IF %ERRORLEVEL%」ステートメントの後に、エコーがオフに設定されているにもかかわらず、すべてが出力されることです…</p>
Executing: "C:\Programme\IBM\Rhapsody752\Share\etc\vs2005_make.bat" Simulation.mak build
IF %ERRORLEVEL%==0 (
Mehr? set arch=x86
Mehr? ) ELSE (
Mehr? set arch=x64
Mehr? )
call "%ProgramFiles%\IBM\Rhapsody752\Share\etc\Vcvars_VisualStudio2005.bat" %arch%
:: param 1 - Processor architecture
@echo off
ECHO param 1 = %1
param 1 = x86
IF %1==x86 (
Mehr? SET ProgrammPath=%ProgramFiles%
Mehr? ) ELSE IF %1==x64 (
Mehr? SET ProgrammPath=%ProgramFiles(x86)%
Mehr? ) ELSE (
Mehr? ECHO Unknowen architectur
Mehr? EXIT /B 1
Mehr? )
SET VSINSTALLDIR="%ProgrammPath%\Microsoft Visual Studio 8\Common7\IDE"
SET VCINSTALLDIR="%ProgrammPath%\Microsoft Visual Studio 8"
SET FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
SET FrameworkVersion=v2.0.50727
SET FrameworkSDKDir="%ProgrammPath%\Microsoft Visual Studio 8\SDK\v2.0"
rem Root of Visual Studio common files.
IF %VSINSTALLDIR%=="" GOTO Usage
IF %VCINSTALLDIR%=="" SET VCINSTALLDIR=%VSINSTALLDIR%
rem
rem Root of Visual Studio ide installed files.
rem
SET DevEnvDir=%VSINSTALLDIR%
rem
rem Root of Visual C++ installed files.
rem
SET MSVCDir=%VCINSTALLDIR%\VC
SET PATH=%DevEnvDir%;%MSVCDir%\BIN;%VCINSTALLDIR%\Common7\Tools;%VCINSTALLDIR%\Common7\Tools\bin\prerelease;%VCINSTALLDIR%\Common7\Tools\bin;%FrameworkSDKDir%\bin;%FrameworkDir%\%FrameworkVersion%;%PATH%;
SET INCLUDE=%MSVCDir%\ATLMFC\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\PlatformSDK\include\gl;%MSVCDir%\PlatformSDK\include;%FrameworkSDKDir%\include;%INCLUDE%
SET LIB=%MSVCDir%\ATLMFC\LIB;%MSVCDir%\LIB;%MSVCDir%\PlatformSDK\lib;%FrameworkSDKDir%\lib;%LIB%
GOTO end
Build Done
私は誰かがアイデアを持っていることを願っています.2日以来、私は今働いていますが、エラーが見つかりません...期待していただきありがとうございます。
注: 「Mehr?」という言葉。テキスト出力ではドイツ語で、「もっと」を意味します。それがどこから来たのかはわかりませんが、英語の出力からドイツ語への悪い翻訳である可能性があります。