自动文件分类vbs脚本
一、demo功能介绍
在生活中或者工作之中,我们经常会遇到的一件事情就是查文件,或者说根据给定的文件,例如.txt文档、excel表格等文档,来进行分类,如果只是少量的工作量,那么手动给它分分类,手动找找,手动copy一下都是无所谓的。但是如果文件达到上百上千了呢,你是否还是愿意自己手动来进行这些操作呢,恐怕就费力不讨好了吧~~~
如果你有过C/C++语言或者其他语言编程基础的话,相信你可以轻松的看懂本文,如果你还只是个小白的话,只要花点心思,相信你也可以学会的。以下就是我在生活中遇到的实际例子,需要根据给定的excel表格完成相应的操作,使用vbs脚本可以在windows系统上轻松的完成以上操作要求,读者可以根据所给的本文所给的Demo,触类旁通,举一反三,也写出属于自己的工作小工具吧,废话不多说,接下来就要详细介绍本文的Demo了。
要求: 根据excel表格中的内容,实现自动分类指定文件夹内的文件
输入: excel表格 、待分类文件
输出: 分类好文件的文件夹
例如:
(1)输入excel表格
test.xls
表格内容为:
![](https://i-blog.csdnimg.cn/blog_migrate/c27ad7ea7fd39ae8bd8de73d53c6e602.png)
(2)输入文件(此外示例为txt格式文件,实际上其他格式的文件均可)
![](https://i-blog.csdnimg.cn/blog_migrate/d50f06646f26b6c516fbc2f51250586e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c4394169f1f7e1bdde148df40a59675e.png)
(3)输出文件
![](https://i-blog.csdnimg.cn/blog_migrate/51a35f343789ccddcf60209b8884b83f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7ac83a6e91f8a282a8696ffe55f5e126.png)
![](https://i-blog.csdnimg.cn/blog_migrate/74d15ceecaba40b986f7ca15bdbf1854.png)
二、vbs脚本基本语法介绍
(1)子函数创建
sub Name()//无返回值类型
...
end sub
function name()//返回值函数,返回值即为句柄:name
...
end function
以上两种类型的函数皆可以传参,即Name(n)
(2)常见运算符
1、算术运算符
+ 加
- 减
* 乘
/ 除
\ 整除
mod 取余
^ 幂
& 字符串连接符
2、比较运算符
> 大于
< 小于
= 等于
<> 不等于
>= 大于等于
<= 小于等于
3、逻辑运算符
not 非
and 与
or 或
xor 异或
eqv 等价
imp 隐含
(3)控制结构
1、条件语句
if(xxx)then //then必须与条件判断在同一行
...
end if
if(xxx)then
...
else
...
end if
2、循环语句
Do Until XXX
...
Loop
For i=1 To n step 1//从i到n,步长为1
...
Next
以上为最基本常见的语句,如有兴趣进一步了解,可以参考以下博文:VBS基本语法
三、Demo介绍
(1)子函数----getRow()
功能:获取excel表格中的有效数据行数
Function getRow()
rowCount =objWorkbook.ActiveSheet.UsedRange.Rows.Count
Dim Count:Count = 1
getRow = 0
Do Until Count > rowCount
stringFlag = Left( objExcel.Cells(Count,2),10 )
if( isDate( stringFlag )=True )then
if(flagStart = 1)then
flagStart = Count
end if
getRow = getRow + 1
end if
Count = Count +1
Loop
End Function
实现思路:
利用Left( Left( objExcel.Cells(Count,2),10 ) )函数
使用objExcel.Cells(Count,2)取出excel表格中第Count行,第2列中的字符串 (这里只取第2列中的数据,是因为表格内容排版格式原因,读者因根据具体情况具体分析)
再将取得的字符串从左开始,取10个字符长度的内容
遍历整个表格,当读取到的文本为 “日期” 类型的数据时,即判断为一行有效数据,并将最终的行数返回:
getRow = getRow + 1
注意:excel表格最左上角是:第1行,第一列,excel表中的汉字也为一个字符大小
(2)子函数----getFileNum(text)
功能:获取所需分类的文件内容
Function getFileNum(text)
Dim result(3),Count:Count = 1
num1 = 0
num2 = 0
num3