.BAT文件循环数字 - 需要将0添加到小于10的数字

时间:2015-05-11 14:22:16

标签: batch-file for-loop

我有许多.bat文件正在打开一个程序并找到每天运行的特定实例。此实例带有时间戳并且每天都会更改。所以我让.bat文件遍历每个查找该实例的数字。格式为YYYYMMDDHHMMSS。

从这个网站我已经有了一个找到上一个工作日的.bat文件。我甚至让它循环遍历数字

问题是如果数字小于10,它需要在它前面有一个0: 01,02,03,04等......   然而,.bat文件吐出的方式是1,2,3等...

  这是我到目前为止的代码:

For /L %%G IN (3,1,9) DO (
    For /L %%H IN (0,1,59) DO (
        If %%H LSS 10 SET %%H=0%%H
            ECHO %prevbusday%0%%G%%H
    )
)
timeout /t 60

第一行循环播放小时(3到9)
嵌套公式然后遍历分钟(0到59)

2 个答案:

答案 0 :(得分:1)

尝试启用delayedexpansion,然后在内部for循环中设置新的varialbe:

@echo off
setlocal enabledelayedexpansion
For /L %%G IN (3,1,9) DO (
    For /L %%H IN (0,1,59) DO (
        If %%H LSS 10 (SET hours=0%%H) else (SET hours=%%H)
            ECHO %prevbusday%0%%G!hours!
pause
    )
)
timeout /t 60

不要忘记在内部for循环中为新的varialbe使用感叹号

答案 1 :(得分:1)

您无法直接修改%%H。您必须设置"variable=%%H"并使用延迟展开来检索!variable!。只要您无论如何都要设置另一个变量,只需使用变量子串。在所有内容前加零,然后使用最右边的两位数字。

setlocal enabledelayedexpansion

For /L %%G IN (3,1,9) DO (
    For /L %%H IN (0,1,59) DO (
        set "h=0%%H"
        ECHO %prevbusday%0%%G!h:~-2!
    )
)
timeout /t 60