by:授客 QQ:1033553122
echo off
setlocal enabledelayedexpansion
rem
设置文件所在目录
set src_dir=F:\Download\test
rem filename用于存放目标文件名
set filename=""
cd /d %src_dir%
for /f %%a in ('dir /o-d /tc /b test*.html') do (
echo
文件完整信息:
%%a
set
filename=%%~na%%~xa
echo
文件名:
!filename!,
最新创建时间:
%%~ta
if not
!filename! == "" (
goto iconv
)
)
:iconv
iconv -f gbk -t utf-8 %filename% >
"jenkins_test_report.html"
pause
说明:
setlocal enabledelayedexpansion:开启本地环境变量延迟
扩展阅读:
批处理运行命令的机制:批处理读取命令时是按行读取的(对于for命令等,其后用一对圆括号闭合的所有语句也当作一行),在处理之前要完成必要的预处理工作,这其中就包括对该行命令中的变量(%var_name%)赋值。开启本地环境变量延迟后,在读取了一条完整的语句之后,不立即对该行的变量赋值,而是在执行某个单条语句之前再对变量进行赋值,也就是说“延迟”了对变量的赋值。开启本地环境变量延迟后,原有变量的界定符由
"%"
改成"!"
for循环语法
for /f %variable IN ('command') DO command
[command-parameters]
dir /o-d /tc /b test*.html:按文件创建时间降序显示test开头的.html文件
dir命令选项
/b
使用空格式(没有标题信息或摘要)。
/o
用分类顺序列出文件。
排列顺序:d
按日期/时间(从先到后)
-
反转顺序的前缀
/t
控制显示或用来分类的时间字符域。
c
创建时间a
上次访问时间
w
上次写入的时间
例:
dir /od:按日期/时间升序显示
dir /o-d:按日期/时间降序显示
dir /tw:
时间列输出为修改时间(默认)
if not !filename! == "" (
goto
iconv
)
如果变量filename不为空,则表示取到了值,
goto iconv
跳转到iconv标签,继续执行标签后的语句
%%a:文件完整信息
%%~da:文件所在驱动器信息
%%~pa:文件所在路径信息
%%~na:文件名信息
%%~xa:文件后缀信息
%%~za:文件大小信息
%%~ta:文件修改时间信息
%%~dpa:文件所在驱动器和所在路径信息
%%~nxa:文件名及后缀信息
%%~pnxa:文件所在路径及文件名和后缀信息
%%~dpna:文件驱动器、路径、文件名信息
%%~dpnxa:文件驱动器、路径、文件名、后缀信息
rem
注释语句
常见问题:
cmd中的编码方式为ANSI,如果中文不是此编码方式则会出现乱码。
解决方法:编辑批处理文件时,以ANSI方式编辑即可(windows自带的记事本保存文件时即可选择编码方式为ANSI)