在64位戴尔笔记本电脑上运行Windows 7 Enterprise(标准规格),并试图将简单的批处理脚本放在一起。奇怪的循环行为
我不知道下面的循环是怎么回事。
我要遍历一组名为“ContactUsDates.txt”一个文本文件中列出的日期范围,格式如下:
2014-02-26,2014-02-27
2014 -02-27,2014-02-28
2014-02-28,2014-03-01
等等逗号前面日期为起始日期,日期逗号之后将是结束日期。文件名是开始日期的简化版本。
我希望我的输出看起来像这样:
开始日期= 2014年2月26日
结束日期= 2014年2月27日
文件名= 140226
开始日期= 2014-02-27
结束日期= 2014-02-28
文件名= 140227
开始日期2014年2月28日=
结束日期= 2014年2月29日
文件名= 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 --------------
)
输出我得到的是有时空白:
开始日期=
结束日期=
文件名=
开始日期=
结束日期=
文件名=
但有时我得到的开始日期和结束日期,但没有文件名:
开始日期= 2014-02 -26
结束日期= 2014-02-27
文件名=
开始日期2014年2月27日=
结束日期= 2014年2月28日
文件名=
这是相同的代码运行在2个不同的命令外壳。
任何帮助找出可能会发生什么将不胜感激!
我怀疑这是一个 'DOS批处理文件'。 'DOS'是一个操作系统,自Windows ME之后就没有被使用过。 –
如果您用'!'替换'echo'语句中的'%',那么您的代码将以书面形式工作。但是在'for'语句中使用''tokens = 1,2 * delims =,''将数据拆分为两个变量会更有效。请参阅下面的答案。 –
对不起,我仍然把任何在CMD窗口中运行的任何东西都叫做“dos”:)我不会编程或者对这些东西了解太多,所以尽我所能! – user3495172