如何解决VBScript通过文件名中的最小值复制/移动文件
我刚开始编写脚本,需要一些帮助。对于我们的非营利性客户,我遇到了一种独特的情况,该情况要求我们比较特定文件夹中的两个或多个文件,然后将文件名中数值最低的文件移到该文件中。
该组织经营着一个非营利性广播电台,其广播节目的内容由数百名志愿者提供,这些志愿者对他们的文件进行命名(当他们记录多个文件时),并在末尾使用各种数字表示文件的日期或顺序。要播出。
基本上,我希望创建一个vbscript(因为我认为可以通过这种方式完成),该脚本将在内容的第一个播出日期之前30分钟与Windows Task Scheduler一起运行,并以最低的值移动文件(如果存在一个以上的文件)到一个文件夹,该文件夹将由无线电自动化软件自动处理。
文件夹中文件的示例可能类似于以下内容:
文件夹1 :(在这种情况下,“ news.mp3”是最小值)
- news.mp3
- news1.mp3
- news2.mp3
文件夹2:
- entertainment24.mp3
- entertainment26.mp3
文件夹3:
- localnews081420.mp3
- localnews081520.mp3
老实说,关于这一点,我什至不知道从哪里开始。我发现有几个脚本可以查看文件日期或文件名中的特定数字或日期格式,但没有一个脚本可以解析文件名中的数字并根据数值移动/复制文件。我希望那里有人比我聪明,可以指出正确的方向。感谢您看我的问题!
我一直在玩的一个脚本(来自脚本专家)使用文件名查看特定年份:
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
...但是我似乎无法跳到常规数,然后取最低值...
解决方法
您可以使用FileSystemObject处理驱动器,文件夹和文件。
我也使用GETNUM
函数来获取数字。
尝试我的方式:
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,1)
End if
Next
GETNUM=Num
End Function
要了解所使用的代码及其工作方式,请打开这些网站并仔细阅读所有页面。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。