vbs 获取当前运行脚本的上级目录_VBS实用小技巧--合并不同文件夹下的文件

本文介绍了如何使用VBS(Visual Basic Scripting Edition)来高效地合并分散在不同文件夹下的文件。通过创建FileSystemObject对象,遍历文件夹及其子文件夹,利用move方法将文件剪切到目标路径。注意事项包括move方法的目标路径必须以斜杠结尾,以避免错误。此外,文章还探讨了如何增强脚本的扩展性,允许用户自定义源目录和目标目录。
摘要由CSDN通过智能技术生成

在我们使用windows操作系统过程中,往往会遇到所需文件分属于不同文件下的情况。此时如果想对这些文件统一进行打包或者操作,则需要手工将其复制到一个文件夹下,非常没有效率。本文所叙述的内容是利用windows系统自带的脚本工具:VBS,仅需几行代码就可以搞定上述问题。

代码功能

假设在"E:photo"文件夹下有名称分别为“1,2,3”的三个文件夹。此时我们想要将1,2,3三个文件夹下的文件剪切至“E:photo_bak”路径下。

代码介绍

set fso=createobject("Scripting.FilesystemObject")set folder=fso.getFolder("E:photo")                         for each fder in folder.SubFolders                         for each fl in fder.Filescall                         fl.move("E:photo_bak")                         next                         next

如上所示即为实现功能的核心代码部分,非常简单。那么它是怎么工作的呢?

首先,我们创建一个“FileSystemObject”对象(这里对该对象不做过多解释,大家只要了解该对象是可以对windows文件系统进行操作的脚本库对象即可)。

之后,利用fso对象的getFolder方法获取源路径的文件夹对象。

接着,我们开始对路径下的文件夹及文件夹下的文件开始进行遍历,这里我们用到了文件夹对象的两个属性:SubFolders以及Files。这两个属性分别返回该文件夹对象的子文件夹对象集合以及文件集合。利用for each Object in Collection 语法对子文件夹集合以及每个子文件夹对象下的文件集合开始遍历,并最终取得我们要进行操作的文件对象 “fl”

最后,利用文件对象“fl”自带的move方法("move(String desPath)")将文件剪切至目标目录下。

注意事项

move方法参数一定为目录形式,即路径应以""符号结尾,如上述代码我们将“fl.move("E:photo_bak")”修改成“fl.move("E:photo_bak")”,系统认为是要将fl对象剪切并替换E盘下的photo_bak文件造成报错。

功能扩展

上述功能我们是将源文件目录及目标目录直接写入到脚本中,程序的扩展性和健壮性都很差,如下脚本可从一定程度上克服这个问题:

dim inpon error resume nextinp=InputBox("Please insert sourcepath")set fso=createobject("Scripting.FileSystemObject")if fso.FolderExists(inp) thenset folder_src=fso.getFolder(inp)elsemsgbox "The source path does not exists"Wscript.quit()end ifdesp=inputbox("Please insert destinationpath")if fso.FolderExists(desp) thenset folder_des=fso.getFolder(desp)elsecheck=msgbox("The destination folder does not exist, Do you need to create?",vbYesNoCancel)if check thenset folder_des=fso.createFolder(desp)elseWScript.quit()end ifend iffor each fder in folder_src.SubFoldersfor each fl in fder.Filescall fl.move(desp)nextnextif Err.Number<>0 then  msgbox Err.Descriptionend if
25768058fc3bdcf14e1beb9adda615bb.png
dim inpon error resume nextinp=InputBox("Please insert sourcepath")set fso=createobject("Scripting.FileSystemObject")if fso.FolderExists(inp) thenset folder_src=fso.getFolder(inp)elsemsgbox "The source path does not exists"Wscript.quit()end ifdesp=inputbox("Please insert destinationpath")if fso.FolderExists(desp) thenset folder_des=fso.getFolder(desp)elsecheck=msgbox("The destination folder does not exist, Do you need to create?",vbYesNoCancel)if check thenset folder_des=fso.createFolder(desp)elseWScript.quit()end ifend iffor each fder in folder_src.SubFoldersfor each fl in fder.Filescall fl.move(desp)nextnextif Err.Number<>0 then  msgbox Err.Descriptionend if

如上脚本可以通过自己选定源目录及目标目录的形式来应对更为一般的情况,此时要注意输入目标目录时,仍需要以""符号作为结尾,否则会出现报错提示框"文件已存在"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值