2012-02-03 2 views
2

배치 파일 2 (C : )에서 배치 파일 1 (경로 C : \ 3rdparty \ Test \ App)을 실행하고 VS2008.sln이 C : \ 3rdparty \ 테스트 \ 응용 프로그램 \ VS2008다른 배치 파일에서 배치 파일 실행

배치 파일 1

REM BatchFile1.bat 

set DEVENV_PATH=%VS90COMNTOOLS%..\IDE 

REM --------------------------------------------------------------------- 

set OUTDIR=.\output\windows\x86 
rmdir /S /Q %OUTDIR% 
mkdir %OUTDIR% 

call "%DEVENV_PATH%\devenv.com" VS2008\VS2008.sln /Rebuild "Release|Win32" 
call "%DEVENV_PATH%\devenv.com" VS2008\VS2008.sln /Rebuild "Debug|Win32" 

REM --------------------------------------------------------------------- 

set OUTDIR=.\output\windows\x64 
rmdir /S /Q %OUTDIR% 
mkdir %OUTDIR% 

call "%DEVENV_PATH%\devenv.com" VS2008\VS2008.sln /Rebuild "Release|x64" 
call "%DEVENV_PATH%\devenv.com" VS2008\VS2008.sln /Rebuild "Debug|x64" 

REM --------------------------------------------------------------------- 


echo "BatchFile1.bat completed." 

배치 파일 batchfile1는이 경로가 다르기 때문에 VS2008.sln을 실행할 수 없습니다 Batchfile2에서 호출 여기에 2

echo "Running Batch File 2" 
call C:\3rdparty\Test\App\BatchFile1.bat 

. I batchfile1을 변경하고 싶지 않습니다. 일괄 처리 파일 2를 변경하여 배치 파일 1을 실행할 수 있습니까?

답변

4

디렉토리를 BatchFile1의 디렉토리로 변경하십시오.

echo "Running Batch File 2" 
cd C:\3rdparty\Test\App 
call BatchFile1.bat 
1

나는 이제 당신이 BatchFile1 경로에 대한 상대 경로를 사용할 수 있습니다, 그것이 무엇이든 BatchFile1 경로로 설정 스크립트를 로컬 변수를 추가했습니다.

REM BatchFile1.bat 

set scriptPath=%~dp0 
set scriptPath=%scriptPath:~0,-1% 

rem now %scriptPath% contain the script path, and then you can use command like 
rem "%scriptPath%\MyCommand.exe" /MyParameter=123_abcd 


set DEVENV_PATH=%VS90COMNTOOLS%..\IDE 

REM --------------------------------------------------------------------- 

set OUTDIR=.\output\windows\x86 
rmdir /S /Q %OUTDIR% 
mkdir %OUTDIR% 

call "%DEVENV_PATH%\devenv.com" "%scriptPath%\VS2008\VS2008.sln" /Rebuild "Release|Win32" 
call "%DEVENV_PATH%\devenv.com" "%scriptPath%\VS2008\VS2008.sln" /Rebuild "Debug|Win32" 

REM --------------------------------------------------------------------- 

set OUTDIR=.\output\windows\x64 
rmdir /S /Q %OUTDIR% 
mkdir %OUTDIR% 

call "%DEVENV_PATH%\devenv.com" "%scriptPath%\VS2008\VS2008.sln" /Rebuild "Release|x64" 
call "%DEVENV_PATH%\devenv.com" "%scriptPath%\VS2008\VS2008.sln" /Rebuild "Debug|x64" 

REM --------------------------------------------------------------------- 


echo "BatchFile1.bat completed." 
0

당신은 batchfile1는 어디든지 현재 디렉토리를 변경 한 다음 다시 바꿀 것

batchfile1.bat

에 코드 주위에

pushd %~dp0 

popd 

를 둘 수 있었다 완료하면