用VBS给照片或视频文件按时间重命名

 

相机里一堆照片视频,时间长了也不知道什么时候照的,干脆直接用文件名标识拍照时间,方便以后管理。

dim fld
dim file
dim fileCount
dim fileRepeat
dim fileNewPath
dim fileTimeString
dim fileExtendName

dim fso

const filterExtendNames = "mp2,mp3,mp4,avi,wma,wmv,mpa,mpe,mpg,mpeg,rmvb,mov,3gp,jpg,jpeg,png,bmp,amr,wav,mp3"

set fso = WSH.CreateObject("Scripting.FileSystemObject")

set fld = fso.GetFolder(".")
fileCount = 0

for each file in fld.Files
  fileExtendName = LCase(fso.GetExtensionName(file.Path))
  if InStr(filterExtendNames, fileExtendName) > 0 then
    fileTimeString = extNum(Year(file.DateCreated), 4) & extNum(Month(file.DateCreated), 2)
    fileTimeString = fileTimeString & extNum(Day(file.DateCreated), 2) & extNum(Hour(file.DateCreated), 2)
    fileTimeString = fileTimeString & extNum(Minute(file.DateCreated), 2) & extNum(Second(file.DateCreated), 2)
    if InStr(file.Name, fileTimeString) = 0 then
      fileNewPath = fso.BuildPath(file.ParentFolder.Path, fileTimeString)
      if fso.FileExists(fileNewPath & "." & fileExtendName) then
        fileRepeat = 0
        do
          fileRepeat = fileRepeat + 1
        loop Until not fso.FileExists(fileNewPath & extNum(fileRepeat, 2) & "." & fileExtendName)
        fileTimeString = fileTimeString & extNum(fileRepeat, 2)
      end if
      fileTimeString = fileTimeString & "." & fileExtendName
      file.Name = fileTimeString
      fileCount = fileCount + 1
    end if
  end if
next

WSH.echo "total files: " & CStr(fileCount)

function extNum(num, length)
  extNum = Right(String(length, "0") & CStr(num), length)
end function


 

你可能感兴趣的:(脚本VB,VBA,VBScript)