VBScript - 按文件名中的字符串查找文件夹中的文件,将找到的文件移动到不同的文件夹

2024-01-04

我仍在学习 VBS,不确定我是否以正确或最有效的方式进行此操作。测试场景如下,除了常规桌面项目之外,我还添加了三个名为:

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

当我的代码(底部)运行时,它会按预期创建“Sorted”文件夹(如果它不存在),但“instr”函数只找到并移动“BBC news”文本文件。此外,如果“Sorted”文件夹已存在且其中包含“BBC news”文本文件,则运行脚本将返回。

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\...\Desktop\Sorted\"
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

非常感谢 Nathan 的贡献,我稍微开发了代码以包含“不匹配”消息框(如最初的预期)和计数器。我和自己争论过:P 是否应该说明此评论中的以下内容,从接下来的冗长内容中,您可以想象结果是肯定的。

由于我一直使用这些论坛来解决 VBS 问题,因此 Ekkehard 始终是一个快速、可靠的帮助和指导来源,我非常感谢他提供的所有建议,并且我从他的回复中学到了很多东西。然而,我经常在上述回复中想起我在这个问题上的完全无能、无知和混乱——我承认自己是一个需要帮助的微薄学习者。为此,我将并且已经避免对他的援助性质,即他看似粗暴的风格和态度,做出任何谴责性的判断或严厉的批评(毕竟我在这里)以获得答案、解释并向那些有更多经验的人学习),所以我将继续认为他这样做的理由是积极的。我想,毕竟,一个在任何学科上都非常精通的人,如果他愿意的话,可以承受迂腐、居高临下甚至羞辱他人的后果,因为这可能主观上被解释为激励或鞭策像我这样的新手的一种手段。相反,我认为这是一种说教警告,它也可以使人感到沮丧、困惑或阻止他们想要学习……

无论如何,这一切都偏离了主题,即我的OP,已得到答复,我感谢两位好心的先生,你们非常有帮助。我修改后的代码如下。

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

sourcefolder = "C:\Users\...\Desktop"
destfolder = "C:\Users\...\Desktop\Sorted\"
searchname1 = "youtube"
searchname2 = "bbc"
searchname3 = "facebook"
i = 0

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
    i = i+1
    if fso.fileexists(destfolder & "\" & file.name) then
    fso.deletefile destfolder & "\" & file.name, true
    end if
fso.movefile sourcefolder & "\" & file.name, destfolder 
end if
next

if i>0 then
wscript.echo i&" files moved to 'Sorted' in path: " & vbcrlf & sourcefolder
wscript.quit()
end if

wscript.echo "No matches found"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBScript - 按文件名中的字符串查找文件夹中的文件,将找到的文件移动到不同的文件夹 的相关文章

  • 经典的 asp/vbscript - 使用正则表达式修改所有 href

    在经典 ASP VB 脚本 中 我需要通过对当前 url 进行编码并在其前面挂起来修改字符串中包含的多个不同的 href 基本上 我想让所有的 href 都通过我的redirect asp 并将现有的 href 编码传递到新链接中 例如 现
  • PHP比较日期[重复]

    这个问题在这里已经有答案了 可能的重复 PHP日期比较 https stackoverflow com questions 4143741 php date compare 我从 mySQL 数据库中获取了一个日期 如下所示 2011 06
  • JavaScript 中二维数组的 forEach() 和 Apply() 方法

    我有一个数组 其元素也是数组 每个数组包含三个元素 我想打电话给function calcMe a b c 对于我的主数组的每个元素使用forEach 方法 但我真的很困惑 不知道如何让它发挥作用 arr 1 5 4 8 5 4 3 4 5
  • 比较元胞数组中的字符串

    我试图在单词列表中找到最常见的单词 到目前为止 这是我的代码 uniWords unique lower words for i 1 length words for j 1 length uniWords if uniWords j lo
  • 在 VBScript 中导航 XML 节点(对于 Dummy)

    我正在尝试编写一个脚本来为我操作 xml 文件中的一些数据 我对 VBScript 还很陌生 但有 VB NET 和 VBA 背景 所以我觉得我知道自己在做什么 我认为可能有更好的方法来导航文件 而不是对每一行进行大量调用 InStr 或类
  • 使用 contains 或循环列表之间有什么大的区别吗?

    性能方面 使用之间真的有很大区别吗 ArrayList contains o 与 foreach iterator LinkedList contains o 与 foreach iterator 当然 对于 foreach iterato
  • VBScript 中的对象/类字典

    vbscript 中是否可以有对象 类的字典 例如 Class employeeclass Public first last salary End Class Dim employeedict Set employeedict Creat
  • 如何判断一个日期是否在其他两个日期之间?

    我有以下代码 if date in start end print in between else print No date start end都是变量 格式为1 1 我应该怎么做才能打印出正确的结果 我尝试将日期设置为 10 2 开始为
  • 为什么 foreach 在从 ListView 中删除项目时起作用,而在 ListBox 中不起作用?

    我已经开始学习 C 我对我发现的行为有点困惑 我试图弄清楚为什么在一种情况下代码可以工作 而在另一种情况下则不能 foreach ListViewItem l in listView1 SelectedItems l Remove fore
  • CSS - 将文本保留在图像下方

    我正在尝试创建一个简单的图片库 有人告诉我使用 float left 但是当我这样做时 页脚中的所有文本都会射到第一张图像 我已经搜索了大约一个小时试图找到解决方案 但我找不到任何东西 我尝试过使用边距 边框 不同的对齐方式和各种不同的小东
  • CreateObject() vbs 的对象列表

    我喜欢脚本 我不喜欢重新发明轮子 所以我喜欢 CreateObject您能给我指出一个可在 VBScript 上使用的广泛且有用的对象列表并附上简短说明吗 确实 我还没有找到超过 50 个的网站 提前致谢 我自己并不知道有这样的列表 但我知
  • VBscript 以提升的权限运行 bat 文件

    这是我的bat文件 REG DELETE HKLM Software Microsoft Windows CurrentVersion WindowsUpdate v SusClientId f REG DELETE HKLM Softwa
  • 如何从 HTA 中启动批处理文件

    我有一个基本的 HTA 其中我尝试通过按钮启动批处理文件 但是当我尝试启动批处理文件时 它不会运行 当我按下按钮时 将启动命令提示符窗口 但不会运行脚本 这是代码的简单示例
  • 如何在远程机器上执行vbs文件

    如何在不使用 PsExec 的情况下执行位于同一域中的远程计算机上的 VBScript 我尝试了以下代码 但没有运气 Sub RunCommand strComputer Command Set objWMIService GetObjec
  • 如何设置任务在使用 vbs 登录时以当前用户身份运行而无需管理员权限?

    从命令行 我可以创建一个在登录时运行的计划任务 无需管理员权限或用户输入密码来设置任务 但是我必须使用 xml 文件来执行此操作 下面是一个示例 xml 其中 Domain User 部分必须在运行时替换为当前用户的域和名称
  • 经典的asp字符编码

    我在经典 asp 网站中遇到西班牙字符问题 用户可以在 aspx 页面上的表单中提交他们的姓名 地址 然后 aspx 页面将 ajax post 发送到经典的 asp 页面 它所做的所有操作都存储在我们的 Sql 2008 DB 中 我可以
  • 捕获 Unicode 文本(西里尔文)并将其插入 MS Access 数据库

    我继承了一个旧的 Web 应用程序 该应用程序使用经典 ASP 将表单中收集的数据写入 Access 2007 数据库 现在他们需要它能够收集西里尔字母的输入 我完全不熟悉代码页 字符集 也不熟悉非拉丁字母 我尝试将输入表单页面上的字符集更
  • 如何在 foreach( ... , .packages="pkg") %dopar% 中指定 R 包的位置

    我的 包 安装在其他地方 我如何告诉 foreach 在哪里可以找到该包 foreach i 1 2 packages pkg dopar 这给我错误消息 worker initialization failed there is no p
  • 在 VBScript 中,如何使用 mid 获取字符串并在“;”处分割字符串

    所以我对 VBScript 比较陌生 并且正在努力获取字符串并删除 拆分它 我目前有 id mid storeline id instr id storeline 1 我本质上想删除 之后的任何代码 例如 ID 12049302 Heigh
  • 基于范围的 for 循环对性能有益吗?

    阅读 Stack Overflow 上有关 C 迭代器和性能 的各种问题后 我开始想知道是否for auto elem container 被编译器 扩展 成最好的版本 就像auto 编译器立即将其推断为正确的类型 因此永远不会更慢 有时甚

随机推荐

  • 如何在 C++ 中创建我自己的循环版本?

    我想知道是否可以创建自定义函数 例如for for each while etc 我想做的事情都是现有循环做不到的 我只是好奇地想了解它们是如何工作的以及我是否需要创建自己的 例如 如果想要创建仅接受参数的 for 函数的另一个版本 在此示
  • 取消选中复选框时删除 li 元素

    我可以动态地添加一个新的li复选框的选中事件上的元素 但是我无法删除相同的内容unchecked event document ready function var value tmCheckbox change function if t
  • WebForms 中的 Tab 键切换行为

    在 WinForms 中 我可以设计一个表单并使用 TabValue 来控制每次用户点击 Tab 时选择哪个控件 我的问题是 在网络表单中 是否有一种机制可以做同样的事情 编辑 这同样适用于 Ajax 密集型应用程序吗 您可以使用 ASP
  • Xml 架构扩展顺序

    如果我有扩展 如何确保派生元素位于基类元素前面 默认情况是相反的 我很想用all 但我知道这是不可能的
  • java中Arrays.fill的复杂性

    How Arrays fill char a char val 已实施内部 in java 它的复杂性是什么 Java 实现使用一个简单的for环形 然而 重要的是要记住 JVM 经常对内部功能进行重大更改 并且经常在运行时用较低级别的实现
  • crawler4j 获取数据遵循什么步骤顺序?

    我想学习 crawler4j是如何工作的 它是否获取网页然后下载其内容并提取它 db 和 csv 文件及其结构怎么样 一般来说 它遵循什么顺序 拜托 我想要描述性内容 Thanks 爬虫通用流程 一个典型的多线程爬虫的流程如下 我们有一个队
  • MPMoviePlayerController 覆盖 iOS 6

    在 iOS6 中使用 MPMoviePLayerController 时遇到覆盖问题 在 iOS6 之前一切正常 在我有这个代码之前 我似乎可以全屏播放电影 interface MovieOverlayViewController UIVi
  • 如何在动态添加的 DropDownList 列表项上添加 OnClick 事件?

    假设我有以下代码 DropDownList changesList new DropDownList ListItem item item new ListItem item Text go to google com changesLis
  • javax.mail.internet.ParseException:在 Content-Type string 中,预期为“/”,得到:

    我想使用 JSF 实现带有附件的邮件 我尝试了这段代码 private Part file private String sendFromGMail String from String pass String to String subj
  • android:layout_weight 是如何工作的?

    当我有以下内容时 它显示具有四种颜色的顶部布局的面积比底部布局区域小得多 根据本文档 http developer android com guide topics ui layout objects html linearlayout 当
  • ElasticSearch:在groovy脚本中访问文档嵌套值

    我有一个存储在 ElasticSearch 中的文档 如下所示 来源 firstname John lastname Smith medals bucket 100 count 1 bucket 150 count 2 我可以使用访问文档内
  • 使用输入框替换文本区域中的部分字符串(属性)

    主要目标 创建一个可以实时预览 HTML CSS 代码的网站 进一步来说 用户可以在某些特定部分编辑 HTML CSS 代码 因此 实时预览中的代码不会源自文本区域 而是源自 div Image of what I am trying to
  • Android 上使用微信 API 发朋友圈

    我用微信API创建了一个应用程序 我尝试在我的用户墙上发帖 我在iOS上可以成功发布微信朋友圈 提示尚未审核 然而在 Android 上 什么也没发生 这是我的代码 private IWXAPI api api WXAPIFactory c
  • htaccess 403 尝试使用 ErrorDocument 时遇到禁止错误

    我想在我的项目中有一个自定义 403 页面 所以我在 htaccess 文件中添加了这些代码 Order deny allow Deny from all Allow from 192 168 1 0 24 ErrorDocument 40
  • 如何在限制x轴后自动设置y轴限制

    假设我有一定数量的数据集想要一起绘制 然后我想放大某个部分 例如 使用ax set xlim or plt xlim or plt axis 当我这样做时 它仍然保留缩放之前的计算范围 我怎样才能让它重新缩放到当前显示的内容 例如 使用 i
  • 如何构建柔性结构?

    我想用像这样的 CSS构建一个灵活的结构 顶部和底部divs具有固定高度 而中心框具有响应高度 它们都应该覆盖整个容器 div 谁能告诉我该怎么做 body position relative padding 0px margin 0px
  • 如何在 GWT 中获取一年中的周数

    有没有一种简单的方法可以从a获取一年中的一周信息Date对象或从毫秒时间开始GWT在客户端 像这样的事情 Date date new Date Date yearStart new Date date getYear 0 0 int wee
  • 如何保存 nltk FreqDist 图?

    我尝试了不同的方法来保存我的情节 但我尝试过的每件事都出现了空白图像 而且我目前还没有没有想法 有其他可以解决此问题的建议吗 代码示例如下 word frequency nltk FreqDist merged lemmatizedToke
  • 如何使用 SuiteScript 采购订单加载项目?

    朋友们正在使用 NetSuite 和 SuiteScript 我可以保存运行脚本的采购订单并对创建的采购订单进行收费 但是当我将返回数据项值作为空值时 我需要获取该项目的 ID 结果给我的 NetSuite 日志是 采购订单 ID 3706
  • VBScript - 按文件名中的字符串查找文件夹中的文件,将找到的文件移动到不同的文件夹

    我仍在学习 VBS 不确定我是否以正确或最有效的方式进行此操作 测试场景如下 除了常规桌面项目之外 我还添加了三个名为 Tool YouTube welcome to facebook BBC news 当我的代码 底部 运行时 它会按预期