VBScript 复制 720p 60fps MP4 文件
VBScript to copy 720p 60fps MP4 files
我正在尝试编写一个脚本,根据帧高或帧速率将 mp4 文件复制到特定文件夹。这是我现在可以使用的代码,但这只是将文件夹和子文件夹中的所有 MP4 文件复制到目标文件夹。
如何更进一步并根据帧高度分隔文件(720p 文件为 720,1080i 文件为 1080)?
Option Explicit
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objSTR, objMP4dest, objXCHANGEdest, objMP4ext, objXCHANGEext, obj720dest, obj1080dest
Dim objFILE, objFILE2, Folder, SubFolder
objSTR = "C:\Users\RMalone.SEC\Videos\MP4 Transfer Test\" 'Folder to search through
objMP4dest = "C:\Users\RMalone.SEC\Videos\MP4 Destination\" 'Folder I want mp4 files to copy to
obj720dest = "C:\Users\RMalone.SEC\Videos\MP4 Destination0p 60fps\"
'Folder for 720p 60fps files
obj1080dest = "C:\Users\RMalone.SEC\Videos\MP4 Destination80 30fps"
'Folder for 1080i 30fps files
objXCHANGEdest = "C:\Users\RMalone.SEC\Videos\Finished\" 'Folder I want xchange files to copy to
objMP4ext = "mp4"
objXCHANGEext = "xchange"
For Each objFILE in objFSO.GetFolder(objSTR).Files
If objFSO.GetExtensionName(objFILE.Path) = objMP4ext Then
objFILE.Copy objMP4dest
End If
Next
For Each objFILE in objFSO.GetFolder(objSTR).Files
If objFSO.GetExtensionName(objFILE.Path) = objXCHANGEext Then
objFILE.Copy objXCHANGEdest
End If
Next
Call srchSUBFOLD(objFSO.GetFolder(objSTR))
Function srchSUBFOLD(Folder)
For Each SubFolder in Folder.SubFolders
For Each objFILE in objFSO.GetFolder(SubFolder.Path).Files
If objFSO.GetExtensionName(objFILE.Path) = objMP4ext Then
objFILE.Copy objMP4dest
End If
Next
Call srchSUBFOLD(SubFolder)
Next
End Function
Function srchSUBFOLD(Folder)
For Each SubFolder in Folder.SubFolders
For Each objFILE in objFSO.GetFolder(SubFolder.Path).Files
If objFSO.GetExtensionName(objFILE.Path) = objXCHANGEext Then
objFILE.Copy objXCHANGEdest
End If
Next
Call srchSUBFOLD(SubFolder)
Next
End Function
帧高度存储在文件的扩展属性中。您可以像这样访问值:
dirname = "C:\your\video\folder"
Set fso = CreateObject("Scripting.FileSystemObject")
Set app = CreateObject("Shell.Application")
Set ns = app.Namespace(dirname)
For Each f In fso.GetFolder(dirname)
If LCase(fso.GetExtensionName(f)) = "mp4" Then
fheight = ns.GetDetailsOf(ns.ParseName(f.Name), 283)
Select Case fheight
Case "720" : 'copy to one location
Case "1080" : 'copy to other location
Case Else : WScript.Echo "Unknown frame height " & fheight & _
" for file " & f.Name & "."
End Select
End If
Next
您可以像这样识别扩展属性的名称和索引号:
dirname = "C:\your\video\folder"
Set app = CreateObject("Shell.Application")
Set ns = app.Namespace(dirname)
For i=0 To 300
WScript.Echo i & vbTab & ns.GetDetailsOf(ns.Items, i)
Next
注意: 运行 带有 cscript.exe
的脚本,所以你不会得到 300 个弹出窗口!
我正在尝试编写一个脚本,根据帧高或帧速率将 mp4 文件复制到特定文件夹。这是我现在可以使用的代码,但这只是将文件夹和子文件夹中的所有 MP4 文件复制到目标文件夹。
如何更进一步并根据帧高度分隔文件(720p 文件为 720,1080i 文件为 1080)?
Option Explicit
Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objSTR, objMP4dest, objXCHANGEdest, objMP4ext, objXCHANGEext, obj720dest, obj1080dest
Dim objFILE, objFILE2, Folder, SubFolder
objSTR = "C:\Users\RMalone.SEC\Videos\MP4 Transfer Test\" 'Folder to search through
objMP4dest = "C:\Users\RMalone.SEC\Videos\MP4 Destination\" 'Folder I want mp4 files to copy to
obj720dest = "C:\Users\RMalone.SEC\Videos\MP4 Destination0p 60fps\"
'Folder for 720p 60fps files
obj1080dest = "C:\Users\RMalone.SEC\Videos\MP4 Destination80 30fps"
'Folder for 1080i 30fps files
objXCHANGEdest = "C:\Users\RMalone.SEC\Videos\Finished\" 'Folder I want xchange files to copy to
objMP4ext = "mp4"
objXCHANGEext = "xchange"
For Each objFILE in objFSO.GetFolder(objSTR).Files
If objFSO.GetExtensionName(objFILE.Path) = objMP4ext Then
objFILE.Copy objMP4dest
End If
Next
For Each objFILE in objFSO.GetFolder(objSTR).Files
If objFSO.GetExtensionName(objFILE.Path) = objXCHANGEext Then
objFILE.Copy objXCHANGEdest
End If
Next
Call srchSUBFOLD(objFSO.GetFolder(objSTR))
Function srchSUBFOLD(Folder)
For Each SubFolder in Folder.SubFolders
For Each objFILE in objFSO.GetFolder(SubFolder.Path).Files
If objFSO.GetExtensionName(objFILE.Path) = objMP4ext Then
objFILE.Copy objMP4dest
End If
Next
Call srchSUBFOLD(SubFolder)
Next
End Function
Function srchSUBFOLD(Folder)
For Each SubFolder in Folder.SubFolders
For Each objFILE in objFSO.GetFolder(SubFolder.Path).Files
If objFSO.GetExtensionName(objFILE.Path) = objXCHANGEext Then
objFILE.Copy objXCHANGEdest
End If
Next
Call srchSUBFOLD(SubFolder)
Next
End Function
帧高度存储在文件的扩展属性中。您可以像这样访问值:
dirname = "C:\your\video\folder"
Set fso = CreateObject("Scripting.FileSystemObject")
Set app = CreateObject("Shell.Application")
Set ns = app.Namespace(dirname)
For Each f In fso.GetFolder(dirname)
If LCase(fso.GetExtensionName(f)) = "mp4" Then
fheight = ns.GetDetailsOf(ns.ParseName(f.Name), 283)
Select Case fheight
Case "720" : 'copy to one location
Case "1080" : 'copy to other location
Case Else : WScript.Echo "Unknown frame height " & fheight & _
" for file " & f.Name & "."
End Select
End If
Next
您可以像这样识别扩展属性的名称和索引号:
dirname = "C:\your\video\folder"
Set app = CreateObject("Shell.Application")
Set ns = app.Namespace(dirname)
For i=0 To 300
WScript.Echo i & vbTab & ns.GetDetailsOf(ns.Items, i)
Next
注意: 运行 带有 cscript.exe
的脚本,所以你不会得到 300 个弹出窗口!