对于批量循环,无法将用户输入作为条件

问题描述

我正在尝试使用For循环,该循环将根据用户批量输入的值开始和结束。但是,当使用用户输入变量时,循环无法正常工作。我可以知道我做错了什么,如何纠正?预先感谢!

P.S。我已经尝试过!%

这是我的源代码,它显示有问题的for循环:

setlocal EnableDelayedExpansion

set /p sy="Enter start year (e.g. 2020): "
set /p sm="Enter start month (e.g. 08): "
set /p ey="Enter end year (e.g. 2020): "
set /p em="Enter end month (e.g. 08): "
echo ***LIST OF MISSING FILES FROM %sm% %sy% to %em% %ey%*** > checkFile_%SUBFILENAME%.txt

for /L %%y in (%sy%,1,%ey%) do (
    for /L %%m in (1,%maxMonth%) do (
    if %%m leq 9 set month=0%%m
    if %%m gtr 9 set month=%%m
    if %%y equ %sy% if !month! leq %sm% (
        goto :continue
    )
    if %%y equ %ey% if !month! equ %em% (
        goto :breakloop
    ) else (
        call :DaysOfMonth %%y !month!
        set maxDay=!errorlevel!
        echo Days Of Month !month!: !maxDay!

这是完整的脚本:

setlocal EnableDelayedExpansion

set maxHour=23
set maxMonth=12
set missing=0

set /p sy="Enter start year (e.g. 2020): "
set /p sm="Enter start month (e.g. 08): "
set /p ey="Enter end year (e.g. 2020): "
set /p em="Enter end month (e.g. 08): "
set CUR_YYYY=%date:~10,4%
set CUR_MM=%date:~4,2%
set CUR_DD=%date:~7,2%
set CUR_HH=%time:~0,2%
if %CUR_HH% lss 10 (set CUR_HH=0%time:~1,1%)

set CUR_NN=%time:~3,2%
set CUR_SS=%time:~6,2%
set CUR_MS=%time:~9,2%

set SUBFILENAME=%CUR_YYYY%%CUR_MM%%CUR_DD%-%CUR_HH%%CUR_NN%%CUR_SS%
echo ***LIST OF MISSING FILES FROM %sm% %sy% to %em% %ey%*** > checkFile_%SUBFILENAME%.txt

for /L %%y in (%sy%,%maxMonth%) do (
    if %%m leq 9 set month=0%%m
    if %%m gtr 9 set month=%%m
    if %%y equ %sy% if !month! leq %sm% (
        goto :continue
    )
    if %%y equ %ey% if !month! equ %em% (
        goto :breakloop
    ) else (
        call :DaysOfMonth %%y !month!
        set maxDay=!errorlevel!
        echo Days Of Month !month!: !maxDay!
        set missingMonth=0

        for /L %%d in (1,!maxDay!) do (
        if %%d leq 9 set day=0%%d
        if %%d gtr 9 set day=%%d
        for /f "tokens=1*" %%i in ('PowerShell -Command "& {Get-Date "!day!/!month!/%%y" -format "ddd_MMM_dd"}"') do (
            for /L %%f in (0,!maxHour!) do (
            if %%f leq 9 set hour=0%%f
            if %%f gtr 9 set hour=%%f
            if not exist "%%i_!hour!_00_00_%%y.enf" (
                echo Missing: %%i_!hour!_00_00_%%y.enf
                echo Missing: %%i_!hour!_00_00_%%y.enf >> checkFile_%SUBFILENAME%.txt
                set /A missing = missing+1
                set /A missingMonth = missingMonth+1
            )
            )
        )
        )
        )
    echo NUMBER OF FILES MISSING FOR !month!: !missingMonth!
    echo ***NUMBER OF FILES MISSING FOR !month!: !missingMonth!*** >> checkFile_%SUBFILENAME%.txt
    echo. >> checkFile_%SUBFILENAME%.txt
    :continue
    )
)
:breakloop
echo TOTAL NUMBER OF FILES MISSING FROM %sm% %sy% to %em% %ey%: %missing%
echo. >> checkFile_%SUBFILENAME%.txt
echo ***TOTAL NUMBER OF FILES MISSING FROM %sm% %sy% to %em% %ey%*** >> checkFile_%SUBFILENAME%.txt
pause

:DaysOfMonth Year Month
setlocal DisableDelayedExpansion
set /a "yy = %~1,mm = 100%~2 %% 100"
set /a "n = 30 + !(((mm & 9) + 6) %% 7) + !(mm ^ 2) * (!(yy %% 4) - !(yy %% 100) + !(yy %% 400) - 2)"
endlocal &exit /b %n%

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...