在64位戴尔笔记本电脑(标准规格)上运行Windows 7企业版,并尝试整理一个简单的批处理脚本。
我无法弄清楚下面的循环是怎么回事。
我想遍历一个名为" ContactUsDates.txt"的文本文件中列出的一组日期范围,格式如下:
2014-02-26,2014-02-27
2014-02-27,2014-02-28
2014-02-28,2014-03-01
等...逗号之前的日期将是开始日期,逗号之后的日期将是结束日期。文件名是开始日期的精简版。
我希望我的输出看起来像这样:
开始日期= 2014-02-26
结束日期= 2014-02-27
Filename = 140226
开始日期= 2014-02-27
结束日期= 2014-02-28
Filename = 140227
开始日期= 2014-02-28
结束日期= 2014-02-29
Filename = 140228
等...
这是我目前正在运行的代码:
@echo OFF
setlocal enabledelayedexpansion
for /f %%A in (ContactUsDates.txt) do (
set daterange=%%A
set startdate=!daterange:~0,10!
set enddate=!daterange:~11,10!
set filename=!daterange:~2,2!!daterange:~5,2!!daterange:~8,2!
@echo Start Date = %startdate%
@echo End Date = %enddate%
@echo Filename = %filename%
@echo --------------
)
我得到的输出有时是空白的:
开始日期=
结束日期=
Filename =
开始日期=
结束日期=
Filename =
但有时我得到开始日期和结束日期,但不是文件名:
开始日期= 2014-02-26
结束日期= 2014-02-27
Filename =
开始日期= 2014-02-27
结束日期= 2014-02-28
Filename =
这是在2个不同命令shell中运行的相同代码。
任何帮助弄清楚可能发生的事情都会非常感激!
答案 0 :(得分:3)
你几乎拥有它。试试这个:
@echo OFF
setlocal enabledelayedexpansion
for /f "tokens=1,2* delims=," %%A in (ContactUsDates.txt) do (
set startdate=%%A
set enddate=%%B
set filename=!startdate:-=!
set filename=!filename:~2!
echo Start Date = !startdate!
echo End Date = !enddate!
echo Filename = !filename!
echo --------------
)
endlocal
当我运行它时,输出如下所示:
Start Date = 2014-02-26
End Date = 2014-02-27
Filename = 140226
--------------
Start Date = 2014-02-27
End Date = 2014-02-28
Filename = 140227
--------------
Start Date = 2014-02-28
End Date = 2014-03-01
Filename = 140228
--------------