Choose Highest Numbered File - Batch File

后端 未结 2 680
情书的邮戳
情书的邮戳 2020-12-16 04:14

I have a directory full of .jar files, named progressively like so:

 version-1.jar
 version-2.jar
 version-3.jar

I am trying to select the

2条回答
  •  抹茶落季
    2020-12-16 04:52

    Here is a slightly simpler version than Joey's code.

    @echo off
    setlocal enableDelayedExpansion
    set max=0
    for /f "tokens=1* delims=-.0" %%A in ('dir /b /a-d version-*.jar') do if %%B gtr !max! set max=%%B
    echo higest version: version-%max%.jar
    

    This code will work even if the version numbers are zero prefixed as long as the version number is never 0 (zero). Specifying tokens=1* with 0 included as a delimiter causes leading zeros to be stripped from the version number while preserving all zeros after the first non-zero digit.

    There is a simpler solution if all versions are zero prefixed to a constant width. But this solution works both with and without zero prefixing.

    Joey's code will fail if leading zeros are present because that indicates octal notation. Invalid octal digits with leading zeros will be treated as strings causing the comparison to give the wrong result. This is probably not an issue since the original question implies leading zeros are not present. But better to be safe than sorry.

提交回复
热议问题