[Visual Studio]使用建置前事件命令列執行批次檔

[Visual Studio]使用建置前事件命令列執行批次檔

紀錄一下過程

問題描述

專案的架構是client-server;當我要測試client端的程式時,需要把server端的程式先執行後才能進行測試,

可是當重新編譯專案時,常常忘記把server程式先關掉再編譯,造成編譯失敗,

所以希望在server端專案編譯前能先把相關程式關閉。

步驟

1. 撰寫開始執行的批次檔Start_CleanExcutingFile.bat,內容如下:


@title 執行清除執行檔
@echo off
SET batchpath=%1 
SET exeFileName=%2
START /d %batchpath% CleanExcutingFile.bat %exeFileName%
@echo on

2. 撰寫關閉server端程式的批次檔CleanExcutingFile.bat,內容如下:


@title 清除執行檔
@echo off
rem 執行檔名稱
set exeFileName=%1

taskkill /F /IM %exeFileName% /T
if errorlevel 128 goto errFileNotExecute
if errorlevel 0 goto success

rem echo %errorlevel%

:success
	echo .Success
	goto final

:errFileNotExecute
	echo .FileNotExecute
	goto final

:final	
	exit
@echo on

3. 將寫好的兩隻批次檔放到專案路徑如下:

image001

4. 撰寫建置前事件命令列,內容如下:


call "$(ProjectDir)BeforeComiple\Start_CleanExcutingFile.bat" $(ProjectDir)BeforeComiple\ $(TargetName)$(TargetExt)

image002

image003

結果畫面

真的將相關server端執行程式關閉。

image005

image007

image008

備註

建置前事件命令列的回應碼(errorlevel)必須為0才會成功,否則專案會編譯失敗。

參考資料

建置前事件/建置後事件命令列對話方塊

Microsoft DOS start command

更正測試的批次檔案 ERRORLEVELs 的優先順序