通过文件名中的字符串在文件夹中查找文件,将找到的文件移动到不同的文件夹 [英] VBScript - Find files in folder by string in filename, move found to different folder
本文介绍了通过文件名中的字符串在文件夹中查找文件,将找到的文件移动到不同的文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我还在学习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屋!
查看全文