Batch file 基于数字排序的文件夹名称

Batch file 基于数字排序的文件夹名称,batch-file,cmd,Batch File,Cmd,更准确地说,我想检索数字顺序最高的文件夹的名称。 所有文件夹都是根据一些randon 6位数字命名的 例如: 如果我有名为 123456 234567 345678 然后我希望能够使用字符串345678 比如: set highestNumber=<code for highest number> set highestNumber= 使用的选项/O获取文件夹的排序列表,使用a遍历该列表,并将当前项分配给变量by,该变量将最终保存最后一项: 对于/F“delims=eol=:”%D

更准确地说,我想检索数字顺序最高的文件夹的名称。 所有文件夹都是根据一些randon 6位数字命名的

例如:

如果我有名为

  • 123456
  • 234567
  • 345678
  • 然后我希望能够使用字符串345678 比如:

    set highestNumber=<code for highest number>
    
    set highestNumber=
    
    使用的选项
    /O
    获取文件夹的排序列表,使用a遍历该列表,并将当前项分配给变量by,该变量将最终保存最后一项:

    对于/F“delims=eol=:”%D in('dir/B/A:D/O:N“D:\root\*”)是否设置“LAST=%D”
    回音(%LAST%)
    
    这取决于所有文件夹名称由相同位数组成的事实


    如果文件夹名称是不具有相同位数的数字,并且您想要最大的数字,
    dir/O:N
    不起作用,因为它进行字母排序,其中
    10
    出现在
    2
    之前。因此,您需要更改方法——下面是一个示例(范围
    0
    2147483647
    ):

    setlocal EnableDelayedExpansion
    rem//初始化缓冲区:
    设置“GRNUMB=”
    对于/F“delims=eol=:”%%D in('
    纯数字名称的rem/过滤器文件夹:^&^
    目录/B/A:D“D:\root\*”^ | findstr/R/C:“^0$”/C:“^[1-9][0-9]*$”
    ""做"(
    rem//进行数值比较:
    如果%%D GTR!GRNUMB!设置/A“GRNUMB=%%D”
    )
    rem//返回结果:
    回音(%GRNUMB%)
    端部
    
    变量
    GRNUMB
    包含迄今为止遇到的最大数量的文件夹的名称。只要当前文件夹的名称构成较大的数量,
    GRNUMB
    就会更新


    如果文件夹名称是不具有相同位数且也可以以零开头的数字,则需要稍微更改代码——以下是一个示例(最多5位数):

    setlocal EnableDelayedExpansion
    rem//初始化缓冲区:
    set“GRNAME=“&set/A”GRNUMB=0”
    对于/F“delims=eol=:”%%D in('
    纯数字名称的rem/过滤器文件夹:^&^
    目录/B/A:D“D:\root\*”^ | findstr“^[0-9][0-9]*$”
    ""做"(
    rem//删除前导零:
    设置“NAME=%%D”和设置/A“NUMB=10000%%D,NUMB%%=10000”
    rem//进行数值比较:
    if!NUMB!GTR!GRNUMB!设置“GRNAME=!NAME!”&设置/A“GRNUMB=!NUMB!”
    )
    rem//返回结果:
    回显(%GRNAME%)
    端部
    
    变量
    GRNAME
    保存迄今为止遇到的最大数量的文件夹名称,
    GRNUMB
    保存转换为真实整数值的数字1。只要当前文件夹的名称包含较大的数字,就会更新
    GRNAME
    GRNUMB



    1) 命令
    set/A“NUMB=10000%%D,NUMB%%=10000”
    10000
    之前,然后将结果除以
    10000
    并返回余数;其结果是前导零消失,这将导致
    设置/A
    如果
    将数字解释为八进制整数,否则不一致。

    文件夹真的命名为10020030000它实际上是6吗数字随机数数字也可以以零开始吗?不,常规正整数如果文件夹包含相同数量的数字,这是完全正确的,但它也可以用于具有不同数量数字的文件夹吗?现在是的,因为我添加了另外两种方法,能够将数字文件夹名称作为真实整数处理r值,甚至可以处理在批处理脚本中可能出现问题的前导零…可能是一个愚蠢的问题,但为什么在echo命令之后会有一个“(”不,这不是一个愚蠢的问题!
    echo%VAR%
    返回
    echo打开|关闭。
    如果
    %VAR%
    为空;
    echo(%VAR%
    是避免意外行为的唯一安全方法;关于该问题,有一个线程。。。