好的,我正在尝试制作一个必须阅读一些.txt
文件的批处理,并创建一些我应该在Google日历上加载的.ics
。
手动设置年份和月份,日期必须从1到30。
批次的作用是:
- 设置日期(d
);
- 更新日期(data
),输入名称文件(in
)和输出名称文件(out
);
- 阅读所有行并创建一整天的事件,并将这些行作为事件的名称。
这项工作应该从20141101.txt
到20141130.txt
完成,从20141101.ics
到20141130.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
等于0
和1
,我只是不明白为什么。
echo !d!
打印00
,01
,3
,4
,...,9
,10
,{ {1}}仅适用于11
和d=0
if语句...
我尝试在set命令中使用和不使用d=1
设置d
,但从未更改...
我做错了什么? 有提示吗?
答案 0 :(得分:0)
我解决了这个问题。
正确的陈述应该写成:
if %%i LSS !prova! (
set "d=0%%i"
) else (
set "d=%%i"
)
[问题是引号强制声明使用vars,因为它们是字符串]
对于每个想要使用相同代码并进行编辑的人,请将其保留在此处。