标题: [文本处理] 批处理每次运行将文本里含指定字符串的行中的数字加一/自增一/加1/自增1 [打印本页]
作者: bathhome 时间: 2017-3-17 12:05 标题: 批处理每次运行将文本里含指定字符串的行中的数字加一/自增一/加1/自增1
本帖最后由 pcl_test 于 2017-3-22 00:06 编辑
批处理每次运行后 build版本号加一
文件 version.h,网上有Python的修改代码,但是系统自带批处理了,因此想用批处理实现下,奈何小菜一个,所以想请教下- #define VER_MAIN 2
- #define VER_SUB 0
- #define VER_SUB2 0
- #define VER_BUILD 1
- #define VER_FULL VER_MAIN.VER_SUB.VER_SUB2.VER_BUILD
- #define VER_FULL_RC VER_MAIN,VER_SUB,VER_SUB2,VER_BUILD
- #define STR_VER_FULL _T(VERTOSTRING(VER_FULL))
- #define STR_VER_FULL_RC VERTOSTRING(VER_FULL_RC)
复制代码
想要实现每次运行批处理 #define VER_BUILD 1 后面的版本号递增,例如 1->2->3
作者: 老刘1号 时间: 2017-3-17 12:19
一点难度没有,去学FOR/f吧
作者: bathhome 时间: 2017-3-17 13:10
回复 2# 老刘1号
正在学习中。。。
作者: GNU 时间: 2017-3-17 14:05
- @echo off
- setlocal enabledelayedexpansion
- (for /f "delims=" %%i in ('type "version.h"') do (
- set "str=%%i"
- if "!str:#define VER_BUILD=!" equ "%%i" (
- echo,%%i
- ) else (
- for /f "tokens=1-3" %%a in ("%%i") do (
- set n=%%c
- set /a n+=1
- echo %%a %%b !n!
- )
- )
- ))>"version.h.new"
- move /y "version.h.new" "version.h" > nul
复制代码
作者: bathhome 时间: 2017-3-17 14:58
回复 4# GNU
哈哈,谢谢解答,自己写了个,utf-8编码第一行不识别,刚学会写这个- @echo off
- echo #pragma once >temp.log
- setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1,2,3,*" %%a in (version.h) do (
- if "%%b"=="VER_BUILD" (
- set /a version=%%c+1
- call echo %%a %%b %%version%% %%d >>temp.log
- )else echo %%a %%b %%c %%d >>temp.log
- )
- move temp.log version.h
复制代码
作者: ShowCode 时间: 2017-3-17 15:04
回复 5# bathhome
bat文件建议保存为 ANSI 格式
作者: bathhome 时间: 2017-3-17 15:18
回复 6# ShowCode
恩恩,谢谢。说的是version.h用的uft-8编码
作者: ShowCode 时间: 2017-3-17 16:25
回复 7# bathhome
BAT处理UTF-8的文件确实不方便。可以考虑改用PowerShell
作者: pcl_test 时间: 2017-3-17 21:47
win7及以上系统运行- @echo off
- powershell ^
- $file='version.h';^
- $txt=[IO.File]::ReadAllText($file, [Text.Encoding]::utf8);^
- [regex]::replace($txt, '(?^<=#define VER_BUILD\s+)\d', {param($n); 1+$n.Value})^
- ^|out-file $file -encoding utf8
- pause
复制代码
作者: bathhome 时间: 2017-4-21 18:16
回复 9# pcl_test
感谢版主解答,不怎么会写脚本。确切说用的不多,前面学会了,后面转手就忘了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |