【发布时间】:2021-08-02 13:16:21
【问题描述】:
我有以下文件,它定义了一个项目的版本号,我在很多地方都在使用它,比如 CMake 文件、python 脚本和其他配置。我唯一的难题是如何在 Windows 的批处理文件中读取它?语法似乎有点奇怪,我现在已经挣扎了几个小时,仍然无法弄清楚。
版本.txt:
VERSION_MAJOR 09
VERSION_MINOR 02
VERSION_PATCH 21
VERSION_SUFFIX rc
我想要做的是在我的 bat 脚本中使用上述变量的值,如下所示:
BatchScript.bat
VERSION_MAJOR = @VERSION_MARJO_FROM_FILE (e.g 09)
VERSION_MINOR = @VERSION_MARJO_FROM_FILE (e.g 02)
【问题讨论】:
-
SET命令用于为变量赋值。带有/F选项的FOR命令用于读取文件。请向我们展示您尝试使用的代码的minimal reproducible example。 -
在
BatchScript.bat中使用命令行for /F "usebackq tokens=1*" %%I in ("Version.txt") do set "%%I=%%J",在该行之后定义环境变量VERSION_MAJOR,字符串值为09和VERSION_MINOR,字符串值为02和@ 987654334@ 字符串值为21和VERSION_SUFFIX字符串值为rc。在命令提示符窗口for /?中运行以获取有关此命令的帮助。字符串比较可以通过if使用运算符==来完成。另请参阅Symbol equivalent to NEQ, LSS, GTR, etc. in Windows batch files。 -
当然也可以使用
for /F "usebackq tokens=1*" %%I in ("Version.txt") do set "%%I_FROM_FILE=%%J"来定义四个以_FROM_FILE结尾的环境变量。但更好的是使用for /F "usebackq tokens=1*" %%I in ("Version.txt") do set "FILE_%%I=%%J"来定义四个环境变量,并在它们的名称开头使用FILE_。你知道为什么如果你添加到批处理文件作为下一行set FILE_输出所有名称以FILE_开头的环境变量及其当前值会更好。
标签: windows batch-file cmd tokenize