Windows批处理可通过纯CMD实现版本号自增管理:将四段式版本号(如1.0.5.66)存于version.txt末行,构建前读取并生成BuildVersion.cs,构建后递增第四位并追加写入;需注意变量无空格、用%~dp0定位路径、初始化文件及跳过特定数字等细节。
在 windows 批处理脚本中实现版本号自增与管理,核心在于:把版本号存成可读写的文本文件(如 version.txt),每次构建前读取、生成代码可用的变量,构建后自动递增并保存。整个过程不依赖外部工具,纯 cmd + 文件操作就能完成。
版本号格式与存储设计
推荐采用四段式版本号(如 1.0.5.66),其中前三位(主.次.修订)由人工维护,第四位(构建号)每次构建自动 +1。这样既保留语义化含义,又支持自动化追踪。
将最新版本号单独写在 version.txt 文件最后一行,例如:
1.0.3.421.0.4.55
1.0.5.66
这样便于脚本用 for /f 读取末行,也方便人工回溯历史。
构建前:读取并生成 BuildVersion.cs
在 Visual Studio 的“生成前事件命令行”中调用一个 get_version.bat,它做三件事:
- 用
for /f "delims=" %%i in (version.txt) do set "LASTVER=%%i"读取最后一行 - 用
for /f "tokens=1-4 delims=." %%a in ("%LASTVER%") do set BUILDNUM=%%d提取第四段 - 生成 BuildVersion.cs,内容类似:
public static class BuildVersion { public const string Version = "1.0.5.66"; }
生成的 .cs 文件会被 C# 项目直接编译引用,供“关于”窗口或更新逻辑使用。
构建后:递增并保存新版本号
在“生成后事件”中运行 inc_version.bat,关键点有三个:
- 用
set /a NEWNUM=%BUILDNUM% + 1计算新构建号(注意跳过数字 4 的需求可在此加判断) - 拼接新版本字符串:
set "NEWVER=%MAJOR%.%MINOR%.%PATCH%.%NEWNUM%" - 追加写入 version.txt:
echo %NEWVER% >> version.txt
如果需跳过某数字(如避免出现“.4”),可在递增后加 if %NEWNUM%==4 set /a NEWNUM+=1 类似逻辑。
配套小技巧提升稳定性
实际部署时容易忽略但很关键的细节:
- 所有
set命令前后不能有空格,否则变量名/值会含空格导致出错 - 批处理中路径建议用
%~dp0获取自身所在目录,避免相对路径失效 - 读写 version.txt 前建议用
if not exist version.txt echo 1.0.0.1 > version.txt初始化 - 若需在不同机器同步版本,把 version.txt 加入源码管理;若仅本地用,可设为忽略

















