为了让老婆大人早点下班,用记事本撸了一段代码

忙了好几个礼拜,W君今天终于可以早早的下了班啦,那赶紧去附近接W嫂公司接W嫂下班。跑到W嫂公司楼下,W嫂说要加班,要整理一份材料,而且今天一定要

忙了好几个礼拜,W君今天终于可以早早的下了班啦,那赶紧去附近接W嫂公司接W嫂下班。跑到W嫂公司楼下,W嫂说要加班,要整理一份材料,而且今天一定要整理出来。W君跑过去看了看,实际上就是需要把一个文件夹里的所有文件名称都统计出来(包括其子文件夹里的文件)。

为了让老婆大人早点下班,用记事本撸了一段代码

对于身为程序猿的W君来说,这个需求非常简单,就是一个程序就能搞定的事情。但是,W嫂电脑里没有装任何编译器怎么办?W嫂公司信息安全保护意识比较强,安装任何软件都需要经过IT部门的申请才可以,而且IT也都下班了。

其实,不需要额外再装任何编译就可以实现W嫂的需求,有个记事本就可以啦。你没有看错,W君也不是开玩笑。因为在Windows系统中内置了一种VBScript的脚本语言,它是微软开发的一种脚本语言,它的语法和VB非常的类似,非常的容易上手。

那么,如何使用记事本开发VBScript程序呢?其实非常简单,只需要新建一个文本文件(例如,hello.txt)并使用记事本打开输入代码(如下代码),然后保存。

MsgBox "hello "

现在自行车我们造好了,出来跑一跑!该如何运行程序呢?直接将新建的文本文件hello.txt扩展名改为.vbs,然后,双击运行即可。

为了让老婆大人早点下班,用记事本撸了一段代码

vbs的hello

下面我们来分析一下如何解决W嫂的问题。为了数据的保密,W君就用下图来表示。首先,我们需要获取当前目录下有那些文件和文件夹,然后,再检索子文件夹下有哪些文件和子文件夹,逐级往下检索直到没有子文件。

为了让老婆大人早点下班,用记事本撸了一段代码

文件和文件夹结构

相信大家很快就能想到,我们可以使用递归的算法来实现。话不多说,下面我们就直接撸代码。

Set ObjWS = WScript.CreateObject("wscript.shell")
currentDir=ObjWS.CurrentDirectory
 
Dim filesTree
filesTree = ""
 
filesTree = SearchFolder(currentDir)
Call Write2File(currentDir, filesTree)
msgbox "OK"
 
Function FilesInFolder(folderPath)
	Dim ObjFSO, ObjFolder, files
	Set ObjFSO = CreateObject("Scripting.FileSystemObject") 
	Set ObjFolder=objFSO.GetFolder(folderPath)
	Set files=ObjFolder.files
	
	Dim fileNames
	fileNames = ""
	
	For Each file In files
		fileNames = fileNames & "-" & folderPath & "\" & file.name & vbCrLf
	Next
	
	FilesInFolder = fileNames
End Function
 
Function SearchFolder(folderPath)
	Dim ObjFSO, ObjFolder, SubFolders
	Set ObjFSO = CreateObject("Scripting.FileSystemObject") 
	Set ObjFolder=objFSO.GetFolder(folderPath)
	Set SubFolders=ObjFolder.SubFolders
	
	Dim fileNames
	fileNames = ""
	
	fileNames = FilesInFolder(folderPath)
	
	if SubFolders.Count =0 then
		SearchFolder = fileNames
	end if
	
	For Each subFolder In SubFolders
		fileNames = fileNames & SearchFolder(subFolder.path)
	Next
	
	SearchFolder = fileNames
End Function

Sub Write2File(path, text)
	Set ObjFSO = CreateObject("Scripting.FileSystemObject") 
	Set outputFile = ObjFSO.CreateTextFile(path & "\output.txt", True)
	outputFile.WriteLine(text)
	outputFile.Close
End Sub

看了上面的代码,大家是不是觉得vbs也可以实现很多功能,而且简单又方便,墙裂推荐给大家使用。大家还可以参考《VBS脚本简述》了解VBS的基础知识。


本文首发于公众号【Will的大食堂】

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/9916.html

(0)
上一篇 2023年 4月 22日 下午11:53
下一篇 2023年 4月 22日 下午11:54

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信