我对脚本相当陌生,需要一些帮助。对于我们的非营利客户端,我遇到了一个独特的情况,它要求我们比较一个特定文件夹中的两个或多个文件,并移动文件名中数值最低的文件。
这个组织经营着一个非营利性广播电台,它有来自数百名志愿者提交的内容,这些志愿者将他们的文件命名(当他们记录了多个文件时),结尾有不同的数字,这些数字要么代表文件的播出日期,要么代表文件的播放顺序。
本质上,我希望创建一个vbscript (因为我认为可以这样做),它将在内容的第一个air日期之前30分钟使用windows任务调度程序运行,并将具有最低值(如果存在多个文件)的文件移动到一个文件夹中,在该文件夹中,它将由无线电自动化软件自动处理。
文件夹中的文件示例可能如下所示:
Folder1:(在本例中,"news.mp3“是最低值)
Folder2:
Folder3:
老实说,在这个问题上,我甚至不知道从哪里开始。我已经找到了几个脚本,它们可以查看文件日期或文件名中的特定数字或日期格式,但没有一个脚本可以解析文件名中的数字并根据数字值移动/复制文件。我希望有一个比我更聪明的人能给我指明正确的方向。谢谢你看我的问题!
我一直在使用的一个脚本(来自脚本编写人员)查看了文件名中的特定年份:
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,我似乎不能跳到规则数,然后取一个最低值.
发布于 2020-08-13 06:49:18
您可以使用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,i,1)
End if
Next
GETNUM=Num
End Function要了解使用的代码及其工作方式,请打开这些站点并仔细阅读所有页面。
https://stackoverflow.com/questions/63381207
复制相似问题