程序猿 阿拉灯教你如何快速写个遍历文件夹的bat批处理程序

  • A+
所属分类:IT技术 小窍门

今天接到个统计word文件名的活,文件名为xx_2011_王三_202_yy.docx 格式,很有规律,于是,我便很容易想到用批处理工具去做,之前也没写过bat的代码,这里mark一下。

原始数据

程序猿 阿拉灯教你如何快速写个遍历文件夹的bat批处理程序

最终效果

程序猿 阿拉灯教你如何快速写个遍历文件夹的bat批处理程序

代码

echo "姓名","科室","数量" >StaticInfo.txt
for %%x in (*.doc,*.txt) do (
	for /f "tokens=3,4 delims=_" %%a in ("%%x") do (
		echo %%a,%%b,1 >>StaticInfo.txt
	)
)

讲解

第一行:输出 "姓名","科室","数量" 这三个属性项到StaticInfo.txt文件中,txt不存在的话会直接新建

第二行:写一个for循环,提取后缀名为*.doc或者*.txt的所有文件名,每次循环赋给x变量

第三行:按照“_”字符分割文件名字符串,并取分割后索引为3和4的数据

tokens获取分割后字符串的列数,列数从1开始技术,可以指定多个,中间用“,”分割。tokens设置具体含义如下:

tokens=x	表示只提取第x列。
tokens=x,y	表示只提取第x列和第y列。
tokens=m-n	表示提取第m列至第n列。
tokens=x*	表示提取第x列和后面所有字符串都作为第x+1列。
tokens=x,*	等同tokens=x*
tokens=x,y,m-n	表示提取第x,y列以及第m至第n列。

delims是指定风格字符,可以指定多个,例如:delims=xy,表示以x或者y作为分隔符。注意:tokens和delims必须在同一对引号中。

tokens参数决定了输出变量的个数,%%a表示第一个变量引用,%%b表示第二个变量引用,依次类推。也可以指定第一个变量为%%m、%%n等,总之下一个变量字符是上一个变量的ascii码值加1。

第四行:将索引为3和4的数据输出到txt中。

答疑

1. bat文件出现中文乱码问题

保存bat文件时选择“ANSI编码”即可。

2. 如何覆盖上一次文件中的内容

echo "姓名","科室","数量" >StaticInfo.txt中的“>”为覆盖上一次内容,如果改成“>>”,则为追加内容。

Qt大课堂-QtShare

发表评论

您必须登录才能发表评论!