2012-02-03 252 views
2

我想从批处理文件2(C :) 和VS2008.sln运行批处理文件1(路径C:\ 3rdparty \ Test \ App)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." 

批处理文件2

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

这里时batchfile1从Batchfile2称它是不是能够执行VS2008.sln因为路径是不同的。 我不想更改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

你可以把

pushd %~dp0 

popd 

在你的代码中batchfile1.bat

这将改变当前目录到哪里batchfile1是再改回来当你做完