在windows批处理中读取属性文件并检索版本信息



我有一个属性文件构建。包含以下信息的属性

conf.major.number=1
conf.minor.number=0
core.major.number=3
core.minor.number=2

我希望我的批处理脚本从conf.major.number和conf.minor.number中获取值,并将输出结果设置为1.0,并将其设置为变量"version"

,当我输入echo %version%时,输出应该是1.0

for /f "skip=1 delims== tokens=2" %%a in (build_info.properties) DO (set "version=%%a")
echo %version%
core.major.number=1
core.minor.number=0

上面的行应该被忽略,我不知道如何跳过这些行。

请帮忙,

感谢

这是解决方案,它工作完美感谢@JosefZ

@ECHO OFF SETLOCAL EnableExtensions EnableDelayedExpansion
set VER_FILE="tldconfrev.number"
set /p id=Enter Ant target to be called "revision" or "hi": 
set /p flag=Do you want the version file to be updated to perforce (Y/N): 
echo(%id%
if /I "%id%"=="revision" (
  if /I "%flag%"=="Y" (
    for /f "delims=" %%a in (
    'type "build_info.properties"^|find "="'
  ) DO (
  set "_%%a"
)
set _
set "version=!_conf.major.number!.!_conf.minor.number!"
echo version=!version!
pause
)
)

尝试下一个方法:

@ECHO OFF
SETLOCAL EnableExtensions
for /f "delims=" %%a in (
      'type "D:batfilesbuild_info.properties"^|find "="'
    ) DO (
  set "_%%a"
)
set _
set "version=%_conf.major.number%.%_conf.minor.number%"
echo version=%version%

:

==>D:batSO32266650.bat
_conf.major.number=1
_conf.minor.number=0
_core.major.number=3
_core.minor.number=2
version=1.0
==>

编辑关于您的评论(接下来,请编辑您的问题并在那里添加代码):

@ECHO OFF SETLOCAL EnableExtensions EnableDelayedExpansion
set VER_FILE="tldconfrev.number"
set /p id=Enter Ant target to be called "revision" or "hi": 
set /p flag=Do you want the version file to be updated to perforce (Y/N): 
echo(%id%
if /I "%id%"=="revision" (
  if /I "%flag%"=="Y" (
    for /f "delims=" %%a in (
        'type "build_info.properties"^|find "="'
      ) DO (
      set "_%%a"
    )
    set _
    set "version=!_conf.major.number!.!_conf.minor.number!"
    echo version=!version!
    pause
  )
)

参考资料(必读):

  • (命令参考)Windows CMD命令行索引
  • (附加特性)Windows CMD Shell命令行语法
  • (%~G等特殊页)命令行参数(参数)
  • (特殊页)enabledelayeexpansion

给猫剥皮的方法不止一种——这里还有两种:

:

@echo off
for /f "usebackq delims=" %%a in ("build_info.properties") do set %%a
echo Version is "%conf.major.number%.%conf.minor.number%"
pause

B:

@echo off
<build_info.properties (
set /p maj=
set /p min=
)
set %maj%
set %min%
echo Version is "%conf.major.number%.%conf.minor.number%"
pause