• 方法一  popen(可获取命令行执行后的输出结果)

转载自:

C++执行命令行指令并获取命令行执行后的输出结果

 1 /*
2 Execute command line commands and get specific results by comparison cTemplate
3 result storage in cResult
4
5 Example:
6
7 d:\SVN>svn info D:\SVN\ZVideoProcessor
8 Path: ZVideoProcessor
9 Working Copy Root Path: D:\SVN
10 URL: http://192.168.2.196/svn/Repos/ZVideoProcessor
11 Relative URL: ^/ZVideoProcessor
12 Repository Root: http://192.168.2.196/svn/Repos
13 Repository UUID: 43546b21-47e8-432e-acd4-bb9acb1f9fba
14 Revision: 1270
15 Node Kind: directory
16 Schedule: normal
17 Last Changed Author: sam.zhen
18 Last Changed Rev: 1268
19 Last Changed Date: 2018-11-01 20:29:28 +0800 (周四, 01 十一月 2018)
20
21 cmd: svn info D:\SVN\ZVideoProcessor
22 cTemplate: Revision:
23 cResult: 1270
24 */
25 int execmd(char* cmd,char* cResult,char* cTemplate)
26 {
27 int iTemplateSize=strlen(cTemplate);
28 char buffer[128];
29 FILE* pipe = _popen(cmd, "r");//open pipe ,execute cmd
30 if (!pipe)
31 {
32 cout<<"execute "<<cmd<<"error"<<endl;
33 return -1;
34 }
35
36 while(!feof(pipe))
37 {
38 if(fgets(buffer, 128, pipe))
39 {
40 //if cTemplate in buffer,then storage result in cResult
41 int res=strncmp(cTemplate,buffer,iTemplateSize);
42 if(res==0)
43 {
44 strncat(cResult,buffer+iTemplateSize,10);
45 int i=strlen(cResult);//because have '\n'
46 cResult[i-1]='\0';
47 break;
48 }
49 else
50 {
51 continue;
52 }
53 }
54 }
55
56 _pclose(pipe);//close pipe
57 return 0;
58 }
59
60 int main()
61 {
62 //get svn version
63 char cSvnVersionNum[10];
64 memset(cSvnVersionNum,0,sizeof(cSvnVersionNum));
65 execmd("svn info ../../../SVN",cSvnVersionNum,"Revision: ");
66   return 0;
67 }
  • 方法二 通过预处理方式

转载自:

c++代码中,使用svn版本号作为程序版本号的实现方法

1.编写版本模板文件svn_revision_template.h

1 #ifndef _SVN_REISION_H_
2 #define _SVN_REVISION_H_
3 #define AMG_LIB_VER_SVN_VERSION "$WCREV$"
4 #endif // !_SVN_REISION_H_

注意$WCREV$这里不能修改

2.新建版本文件svn_revision.h

1 #ifndef _SVN_REISION_H_
2 #define _SVN_REVISION_H_
3 #define AMG_LIB_VER_SVN_VERSION "1267"
4 #endif // !_SVN_REISION_H_

3.通过预先生成事件,添加下面的批处理命令

subwcrev.exe .\   .\svn_revision_template.h  .\svn_revision.h

注意第一个参数.\ 指需要获取哪个路径的svn号码

第二个参数.\svn_revision_template.h 指模板文件路径

第三个参数.\svn_revision.h 指修改后文件保存路径

4.代码中使用:直接使用.\svn_revision.h文件中的宏

AMG_LIB_VER_SVN_VERSION

如何获得svn的版本号信息?的更多相关文章

  1. SVN自动生成版本号信息

        在平时的多版本开发过程中,需要通过版本号来定位到源码版本,便于定位问题.常规工程实践是设置版本号为X.Y.Z.N,一般X表示主版本号,Y表示子版本号,我一般将Z设为0,N为本次提交的SVN版本 ...

  2. VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中

    在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主版本.次版本.内部版本.修改版本四个部分组成,我们获取的SVN版本就作为修改版本即可. ...

  3. 隐藏nginx 版本号信息

    为了安全,想将http请求响应头里的nginx版本号信息隐藏掉: 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server loc ...

  4. 网站程序版本号信息也可能造成bd快照严重滞后

    在a5上看到一篇“破解阿里云论坛的快照时间迷局 或涉足所有phpwind论坛”的文章,里面说到pw的一个版本信息导致了快照滞后的问题,这再次验证了之前那篇文章“时间戳造成快照滞后”的准确性. 如下图所 ...

  5. 隐藏nginx 版本号信息(转)

    为了安全,想将http请求响应头里的nginx版本号信息隐藏掉: 1. nginx配置文件里增加 server_tokens off; server_tokens作用域是http server loc ...

  6. 锤子Smartisan T1手机官方4.4.2系统内核版本号信息

    从锤子smartisan T1手机官方系统EGL中获取内核版本号信息(由cofface提供): I/Adreno-EGL(  816): <qeglDrvAPI_eglInitialize:41 ...

  7. VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)

    原文:VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#) 在开发项目时,需要知道当前发布的到底是哪个版本,比较好的方式就是获取SVN的版本来作为项目的版本.项目版本一般由主版 ...

  8. 【转载】如何查看sqlserver客户端的版本号信息

    在sqlserver的使用过程中,有时候可能会因为sqlserver版本过低等原因的导致无法附加以及还原数据库,我们可以通过sql server management studio软件的帮助菜单参看到 ...

  9. Nginx优化之基本安全优化 (隐藏Nginx软件版本号信息,更改源码隐藏Nginx软件名及版本号,更改Nginx服务的默认用户)

    一,隐藏Nginx软件版本号信息 查看版本号 curl -I 192.168.0.220 HTTP/1.1 200 OK Server: nginx/1.6.2 #这里清晰的暴露了Web版本号(1.6 ...

随机推荐

  1. Redis缓存篇(四)缓存异常

    这一节,我们来学习一下缓存异常.缓存异常有四种类型,分别是缓存和数据库的数据不一致.缓存雪崩.缓存击穿和缓存穿透. 下面通过了解这四种缓存异常的原理和应对方法. 缓存和数据库的数据不一致 缓存和数据库 ...

  2. python+sklearn+kaggle机器学习

    python+sklearn+kaggle机器学习 系列教程 0.kaggle 1. 初级线性回归模型机器学习过程 a. 提取数据 b.数据预处理 c.训练模型 d.根据数据预测 e.验证 今天是10 ...

  3. Linux下安装Oracle11g服务器【转】

    安装环境 Linux服务器:oracle linux 6.6 64位 Oracle服务器:Oracle11gR2 64位 系统要求 Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1 ...

  4. PAT甲级 Perfect Sequence (25) 记忆化搜索

    题目分析: 意思是要求对于一个给出的数组,我们在其中尽可能多选数字,使得所选数字的max <= min * p,而由于数据量较大直接二层循环不加优化实现是不现实的,由题意得知,对于数字序列的子序 ...

  5. rename 表名

    rename table 旧表名1 to 新表名1,旧表名2 to 新表名2;

  6. 【Oracle】substr()函数详解

    Oracle的substr函数简单用法 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个 ...

  7. oracle RAC和RACOneNode之间的转换

    Convert RAC TO RACOneNode 1.查看资源状态 [grid@rac01 ~]$ crsctl status res -t 从这里看到,数据库的名字叫racdb 2.查看实例 [o ...

  8. powershell中的cmdlet命令

    Add-Computer 向域或工作组中添加计算机. Add-Content 向指定的项中添加内容,如向文件中添加字词. Add-History 向会话历史记录追加条目. Add-Member 向 W ...

  9. Java运算符概要与数学函数

    运算符概要 在Java中,使用算术运算符+,-,*,/表示加减乘除运算,当参与/的运算的两个操作数都是整数时,表示整数除法,否则,表示浮点除法.整数的求余操作(有时称为取模),用%表示,例如,15/2 ...

  10. SQL函数知识点

    SQL函数知识点 SQL题目(一) 1.查询部门编号为10的员工信息 select*from emp where empno=10; 2.查询年薪大于3万的人员的姓名与部门编号 select enam ...