将 git 分支添加到头文件中的批处理文件
Batch file to add git branch into header file
我正在 git 下开发一个 C 项目,我想将分支名称添加到头文件中。
这是我的想法:
我有一个版本头文件:
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _VERSION_INTERFACE_H_
#define _VERSION_INTERFACE_H_
/* Includes ------------------------------------------------------------------*/
/* Exported defines ----------------------------------------------------------*/
/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
const char *gitBranch = "develop";
/* Exported macro ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#endif /* _VERSION_INTERFACE_H_ */
我想用当前分支的名称替换与 gitBranch 关联的字符串。
这样我就可以在预构建过程中执行批处理文件并更新 gitBranch 变量。
我写了一个批处理文件的第一个版本:
@echo off
setlocal enabledelayedexpansion
SET GIT_CMD="C:\Program Files\Git\bin\git.exe"
rem Specify input file name
SET inputFileName=include\version_interface.h
rem String to find
SET stringToFind=const char *gitBranch
FOR /F "tokens=*" %%a in ( '"C:\Program Files\Git\bin\git.exe" branch --show-current' ) do SET branchName=%%a
rem String to replace
SET stringToReplace=%branchName%
for /F "tokens=*" %%n in (!infile!) do (
SET LINE=%%n
SET TMPR=!LINE:%stringToFind%=%stringToReplace%!
Echo !TMPR!>>tmp.txt
)
move tmp.txt %infile%
pause
但目前我不能:
- 更新头文件中的分支名称。
有什么建议吗?
在此先感谢您的帮助!
此致,
费德里科
未经测试。只需确保将正确的文件路径添加到 set infile=
@echo off
set "infile=C:\Path\to\FILE.h"
for /f "tokens=*" %%a in ('"C:\Program Files\Git\bin\git.exe" branch --show-current' ) do set "branchName=%%a"
for /f "delims=" %%i in ('type "%infile%" ^| find /v /n "" ^& break^>%infile%') do (
setlocal enabledelayedexpansion
set "line=%%i"
set "line=!line:*]=!"
if "!line:~0,21!" == "const char *gitBranch" set "line=const char *gitBranch ="%branchName%";"
echo(!line!>>!infile!
endlocal
)
我正在 git 下开发一个 C 项目,我想将分支名称添加到头文件中。
这是我的想法:
我有一个版本头文件:
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _VERSION_INTERFACE_H_
#define _VERSION_INTERFACE_H_
/* Includes ------------------------------------------------------------------*/
/* Exported defines ----------------------------------------------------------*/
/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
const char *gitBranch = "develop";
/* Exported macro ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#endif /* _VERSION_INTERFACE_H_ */
我想用当前分支的名称替换与 gitBranch 关联的字符串。 这样我就可以在预构建过程中执行批处理文件并更新 gitBranch 变量。
我写了一个批处理文件的第一个版本:
@echo off
setlocal enabledelayedexpansion
SET GIT_CMD="C:\Program Files\Git\bin\git.exe"
rem Specify input file name
SET inputFileName=include\version_interface.h
rem String to find
SET stringToFind=const char *gitBranch
FOR /F "tokens=*" %%a in ( '"C:\Program Files\Git\bin\git.exe" branch --show-current' ) do SET branchName=%%a
rem String to replace
SET stringToReplace=%branchName%
for /F "tokens=*" %%n in (!infile!) do (
SET LINE=%%n
SET TMPR=!LINE:%stringToFind%=%stringToReplace%!
Echo !TMPR!>>tmp.txt
)
move tmp.txt %infile%
pause
但目前我不能:
- 更新头文件中的分支名称。
有什么建议吗?
在此先感谢您的帮助!
此致, 费德里科
未经测试。只需确保将正确的文件路径添加到 set infile=
@echo off
set "infile=C:\Path\to\FILE.h"
for /f "tokens=*" %%a in ('"C:\Program Files\Git\bin\git.exe" branch --show-current' ) do set "branchName=%%a"
for /f "delims=" %%i in ('type "%infile%" ^| find /v /n "" ^& break^>%infile%') do (
setlocal enabledelayedexpansion
set "line=%%i"
set "line=!line:*]=!"
if "!line:~0,21!" == "const char *gitBranch" set "line=const char *gitBranch ="%branchName%";"
echo(!line!>>!infile!
endlocal
)