【问题标题】:Reading property file in windows batch and retrieving the version informationwindows批量读取属性文件并检索版本信息
【发布时间】:2015-11-22 20:32:03
【问题描述】:

我有一个包含以下信息的属性文件 build.properties:

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

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

当我给 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
)
)

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    尝试下一个方法:

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

    输出

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

    编辑关于您的评论(接下来,edit your question 并在此处添加代码):

    @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
      )
    )
    

    资源(必读):

    【讨论】:

    • 为了让它更短(我假设文件中不止这四行),您可以使用find "conf.m" 而不是find "="
    • @JosefZ,你的代码工作正常,但是当我在我的代码中实现相同的东西时,它不显示版本
    • @ECHO OFF SETLOCAL EnableExtensions set VER_FILE="tldconfrev.number" set /p id=输入要称为“revision”或“hi”的Ant目标:set /p flag=你想要的版本要更新的文件强制执行 (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 % 暂停 ) ) )
    • 对不起,我不知道如何以正确的方式发布代码。上面的代码可以直接复制粘贴试试看。
    【解决方案2】:

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

    答:

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

    乙:

    @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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      相关资源
      最近更新 更多