Batch file 奇数for循环行为
在64位Dell笔记本电脑上运行Windows 7 Enterprise(标准规格),并尝试编写一个简单的批处理脚本 我不知道下面的循环是怎么回事 我想在名为“ContactUsDates.txt”的文本文件中列出一组日期范围,格式如下:Batch file 奇数for循环行为,batch-file,for-loop,Batch File,For Loop,在64位Dell笔记本电脑上运行Windows 7 Enterprise(标准规格),并尝试编写一个简单的批处理脚本 我不知道下面的循环是怎么回事 我想在名为“ContactUsDates.txt”的文本文件中列出一组日期范围,格式如下: Start Date = 2014-02-26 End Date = 2014-02-27 Filename = 140226 -------------- Start Date = 2014-02-27 End Date = 2014-02-28 Filen
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
--------------
2014-02-262014-02-27
2014-02-272014-02-28
2014-02-282014-03-01
等等。。。逗号前的日期为开始日期,逗号后的日期为结束日期。文件名是开始日期的精简版本
我希望我的输出如下所示:
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
--------------
开始日期=2014年2月26日
结束日期=2014年2月27日
文件名=140226
开始日期=2014年2月27日 结束日期=2014年2月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年2月26日 结束日期=2014年2月27日 文件名=
开始日期=2014年2月27日 结束日期=2014年2月28日 文件名=
这是在两个不同的命令shell中运行的相同代码
如果您能帮助我们了解可能发生的事情,我们将不胜感激 你差点就成功了。试试这个:
@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
--------------
我怀疑它是“dos批处理文件”
DOS
是一种自Windows ME之后就没有使用过的操作系统。如果您将echo
语句中的%
替换为,则您的代码将与编写的代码一样工作代码>。但是使用for
语句中的“tokens=1,2*delims=,”
将数据拆分为两个变量更有效。请看下面我的答案。对不起,我仍然把在CMD窗口中运行的任何东西都称为“dos”:)我不编程,也不太了解这些东西,所以请尽我所能!我几乎完成了完全相同的代码的编写^^^谢谢,它运行得非常完美:)现在我有了更酷的工具,如“tokens”和“delims”。