通过文件名中的字符串在文件夹中查找文件,将找到的文件移动到不同的文件夹 [英] VBScript - Find files in folder by string in filename, move found to different folder

查看:0
本文介绍了通过文件名中的字符串在文件夹中查找文件,将找到的文件移动到不同的文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我还在学习VBS,不确定我做这件事的方式是正确的,还是最有效的。测试场景如下,除了常规的桌面项目外,我还添加了三个.txt文件,名为:

"Tool - YouTube"
"welcome to facebook"
"BBC news"

当我的代码(底部)运行时,它会按预期创建"sorted"文件夹(如果它不存在),但‘instr’函数只能找到并移动"bbc新闻"文本文件。此外,如果"sorted"文件夹中已存在"bbc新闻"文本文件,则运行该脚本将返回。

Line 20
Char 2
Error: File already exists
Code: 800A003A
脚本在运行时应根据搜索字符串在"源"文件夹中查找任何文件,并将它们移动到另一个"目标"文件夹。如果"目标"文件夹中存在重复项,则应用"源"文件夹中的文件替换它。有人能解释一下我应该应用哪些更改才能使我的脚本正常工作吗?

dim fso, folder, newfolder, sourcefolder, destfolder, searchname1, searchname2, searchname3

sourcefolder = "C:Users...Desktop"
destfolder = "C:Users...DesktopSorted"
searchname1 = "youtube"
searchname2 = "bbc"
searchname3 = "facebook"

set fso = createobject("scripting.filesystemobject") 
set folder = fso.getfolder(sourcefolder)  

if not fso.folderexists(destfolder) then
    newfolder = fso.createfolder(destfolder)
    wscript.echo "'Sorted' folder created in path: " & vbcrlf & sourcefolder
end if

for each file in folder.files
    x = fso.getbasename(file)
    if instr(lcase(x), searchname1) > 0 or instr(lcase(x), searchname2) or instr(lcase(x), searchname3) then
        fso.movefile sourcefolder & "" & file.name, destfolder
        wscript.echo"Files moved to 'Sorted' in path: " & vbcrlf & sourcefolder
        wscript.quit()
    else
        wscript.echo "No matches found"
        wscript.quit()
    end if
next

推荐答案

在这里,我修复了IF/THEN语句并添加了和IFfso.fileexists

dim fso, folder, newfolder, sourcefolder, destfolder, searchname1, searchname2, searchname3

sourcefolder = "C:Users...Desktop"
destfolder = "C:Users...DesktopSorted"
searchname1 = "youtube"
searchname2 = "bbc"
searchname3 = "facebook"

set fso = createobject("scripting.filesystemobject") 
set folder = fso.getfolder(sourcefolder)  

if not fso.folderexists(destfolder) then
    newfolder = fso.createfolder(destfolder)
    wscript.echo "'Sorted' folder created in path: " & vbcrlf & sourcefolder
end if

for each file in folder.files
    x = fso.getbasename(file)
    if instr(lcase(x), searchname1) > 0 or instr(lcase(x), searchname2) > 0  or instr(lcase(x), searchname3) > 0 then
        if fso.fileexists(destfolder & "" & file.name) then
            fso.deletefile destfolder & "" & file.name, true
            fso.movefile sourcefolder & "" & file.name, destfolder
        else
            fso.movefile sourcefolder & "" & file.name, destfolder
        end if
    end if
next

wscript.echo "Files moved to 'Sorted' in path: " & vbcrlf & sourcefolder

这篇关于通过文件名中的字符串在文件夹中查找文件,将找到的文件移动到不同的文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆