1. for帮助原型
FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列
1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)
2. 一个案例代码
需求说明:
假设需要设计定时任务(schedule task),每隔一段时间将某个目录下的文件发送到远端机器,然后删除目录下的所有文件,目录下的文件由其他任务产生。此案例脚本就是模拟文件的产生,通过for循环产生等差序列来区分不同的文件。
@echo off
Rem close echo
chcp 437>nul
setlocal enabledelayedexpansion
Rem set parameters
set TIME_HOUR=!time:~0,2!
set TIME_MIN=!time:~3,2!
set SYS_TIME=%TIME_HOUR%_%TIME_MIN%
Rem enter script's path
pushd %~dp0
Rem create file
for /L %%i in (1,1,5) do (
set tmpfile=%SYS_TIME%_tempfile_%%i.txt
echo This is a temp file, seq is %%i >!tmpfile!
)
popd
endlocal
pause
程序的主要功能已经加了注释,相信大家都能理解。主要说明以下几点:
a. 对当前时间进行字符串截取后拼装:
set TIME_HOUR=!time:~0,2!
set TIME_MIN=!time:~3,2!
set SYS_TIME=%TIME_HOUR%_%TIME_MIN%
目的是为了区别不同时间的文件,因为前面需求说了:此脚本可能被定时任务所调用。
b. pushd/popd表示将路径压栈并进入路径,这样产生的文件就在脚本的同级目录,因为我没有拼接文件的完整路径;
c. for /L产生等差序列。其中for循环体中根据时间和序列号拼接了文件名,并用echo的重定向向文件写入了一行文字。
3. 效果图
