如果带有数字的Statement出错了

时间:2014-11-11 20:28:21

标签: batch-file if-statement

好的,我正在尝试制作一个必须阅读一些.txt文件的批处理,并创建一些我应该在Google日历上加载的.ics

手动设置年份和月份,日期必须从1到30。

批次的作用是:

- 设置日期(d);

- 更新日期(data),输入名称文件(in)和输出名称文件(out);

- 阅读所有行并创建一整天的事件,并将这些行作为事件的名称。

这项工作应该从20141101.txt20141130.txt完成,从20141101.ics20141130.ics创建文件。

我发布了下面的代码和问题。

代码:

@echo off
setLocal enableDelayedExpansion
set "y=2014"
set "m=11"
set "d=00"
set /A "prova=10"
set "data=!y!!m!!d!"
set "in=!data!.txt"
set "out=!data!.ics"
for /L %%i in (0,1,11) do (
    if "%%i" LSS "!prova!" (
        set "d=0%%i"
    ) else (
        set "d=%%i"
    )
    echo !d!
    set "data=!y!!m!!d!"
    set "in=!data!.txt"
    set "out=!data!.ics"
    echo BEGIN:VCALENDAR>>!out!
    for /F "tokens=*" %%l in (!in!) do (
        echo BEGIN:VEVENT>>!out!
        echo DTSTART;VALUE=DATE:!data!>>!out!
        echo SUMMARY:%%l>>!out!
        echo END:VEVENT>>!out!
    )
    echo END:VCALENDAR>>!out!
)
pause
goTo :exit

:exit
    exit

问题: 必须控制日期是否小于10的if语句仅适用于d等于01,我只是不明白为什么。

echo !d!打印000134,...,910,{ {1}}仅适用于11d=0 if语句...

我尝试在set命令中使用和不使用d=1设置d,但从未更改...

我做错了什么? 有提示吗?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

正确的陈述应该写成:

if %%i LSS !prova! (
    set "d=0%%i"
) else (
    set "d=%%i"
)

[问题是引号强制声明使用vars,因为它们是字符串]

对于每个想要使用相同代码并进行编辑的人,请将其保留在此处。