首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按文件名中最低值复制/移动文件的VBScript

按文件名中最低值复制/移动文件的VBScript
EN

Stack Overflow用户
提问于 2020-08-12 16:48:16
回答 1查看 137关注 0票数 0

我对脚本相当陌生,需要一些帮助。对于我们的非营利客户端,我遇到了一个独特的情况,它要求我们比较一个特定文件夹中的两个或多个文件,并移动文件名中数值最低的文件。

这个组织经营着一个非营利性广播电台,它有来自数百名志愿者提交的内容,这些志愿者将他们的文件命名(当他们记录了多个文件时),结尾有不同的数字,这些数字要么代表文件的播出日期,要么代表文件的播放顺序。

本质上,我希望创建一个vbscript (因为我认为可以这样做),它将在内容的第一个air日期之前30分钟使用windows任务调度程序运行,并将具有最低值(如果存在多个文件)的文件移动到一个文件夹中,在该文件夹中,它将由无线电自动化软件自动处理。

文件夹中的文件示例可能如下所示:

Folder1:(在本例中,"news.mp3“是最低值)

  • news.mp3
  • news1.mp3
  • news2.mp3

Folder2:

  • entertainment24.mp3
  • entertainment26.mp3

Folder3:

  • localnews081420.mp3
  • localnews081520.mp3

老实说,在这个问题上,我甚至不知道从哪里开始。我已经找到了几个脚本,它们可以查看文件日期或文件名中的特定数字或日期格式,但没有一个脚本可以解析文件名中的数字并根据数字值移动/复制文件。我希望有一个比我更聪明的人能给我指明正确的方向。谢谢你看我的问题!

我一直在使用的一个脚本(来自脚本编写人员)查看了文件名中的特定年份:

代码语言:javascript
运行
复制
strComputer = “.”
Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2”)
Set colFiles = objWMIService.ExecQuery _
    (“ASSOCIATORS OF {Win32_Directory.Name=’C:\Test’} Where ” _
        & “ResultClass = CIM_DataFile”)
Set objRegEx = CreateObject(“VBScript.RegExp”)
For Each objFile in colFiles
    objRegEx.Global = True   
    objRegEx.Pattern = “\d{4}”
    strSearchString = objFile.FileName
    Set colMatches = objRegEx.Execute(strSearchString)
    strYear = colMatches(0).Value
    strNewFile = “C:\Test\” & strYear & “\” & objFile.FileName & _
        “.” & objFile.Extension
    objFile.Copy(strNewFile)
    objFile.Delete
Next

...but,我似乎不能跳到规则数,然后取一个最低值.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-13 06:49:18

您可以使用FileSystemObject处理驱动器、文件夹和文件。

另外,我还使用GETNUM函数来获得数字。

试试我的方式:

代码语言:javascript
运行
复制
sFolder = "C:\Test\"
Set oFSO = CreateObject("Scripting.FileSystemObject")

For Each objFile in oFSO.GetFolder(sFolder).Files
    Number=GETNUM(objFile.Name)
    strNewFile = sFolder & Number & "\" & objFile.Name

    If NOT (oFSO.FolderExists(sFolder & Number)) Then
    oFSO.CreateFolder(sFolder & Number)
    End If
    oFSO.MoveFile objFile, strNewFile
Next

Function GETNUM(Str)
For i=1 To Len(Str)
if IsNumeric(Mid(Str,i,1)) Then
Num=Num&Mid(Str,i,1)
End if
Next
GETNUM=Num
End Function

要了解使用的代码及其工作方式,请打开这些站点并仔细阅读所有页面。

MoveFile法 用于检查文件夹是否存在的Vbs脚本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63381207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档