×

vbs

vbs 批量更改图片文件名

管理员 管理员 发表于2010-10-24 05:14:12 浏览2763 评论0

抢沙发发表评论

'批量改文件名  ReNameFiles.vbs
'防止出现错误
On Error Resume Next
'vbs代码开始----------------------------------------------

Set fso = CreateObject("Scripting.FileSystemObject")
Set ws =createobject("wscript.shell")
Dim path,extName,destFileName

Dim nCount '文件计数
Dim perName '前缀名
Dim nLen '文件名数字变量的位数 examp: Pic00123.jpg  nLen=5

'初始化变量
nCount=1
perName="Pic" '自己看着改
nLen=4

path=szGetThisPath

Dim extArray
'要处理的图片类型
extArray=Array(".jpg",".bmp",".png",".gif",".tag",".psd")

Dim tmpCount
tmpCount=UBound(extArray)

set files=fso.getfolder(path)
for each thing in files.files'文件的枚举
 Do
  If StrComp(thing.name,Wscript.ScriptName)=0 Then '如果文件名=本脚本名,跳过,不改
   Exit Do
  End If
  extName=LCase(GetExtName(thing.name))   '取文件的扩展名
  If StrComp(extName,".bak")=0 Then   '.bak类文件删除
   fso.DeleteFile(thing.name)   '如果不想删的就在这一句前面加个单引号 " ' "
   Exit Do
  End If
 
  Dim isJump
  isJump=1
  For each x in extArray 
   If StrComp(x,extName)=0 Then
    isJump=0
    Exit For
   End If 
  Next
  If isJump=1 Then
   Exit Do
  End If
  Dim zeroStr     '凑数字变量的位数
  zeroStr=""
  For i=1 to (nLen-nGetExp(nCount))   '不够位数的用"0"填充
   zeroStr =zeroStr&"0"
  Next
  destFileName=perName&zeroStr&CStr(nCount)&extName'要改成的文件名
  
  fso.MoveFile thing.name,destFileName  '改名操作
  nCount=nCount+1     '计数+1
 Loop While(0)
Next

nCount=nCount-1
ws.Popup CStr(nCount)&"  个文件批量改名完毕",3,"执行完毕"

'----------------------------------------------------------
'功能函数
'----------------------------------------------------------
function szGetThisPath
'功能:返回本脚本的路径
 Dim Path
 Path=left(Wscript.ScriptFullName,len(Wscript.ScriptFullName)-len(Wscript.ScriptName))
 szGetThisPath=Path
end function
'---------------------------------------------------------
function GetExtName(filename)
'功能:返回文件的扩展名
 Dim extName
 Dim start
 start=InStrRev(filename,".")
 extName=Right(filename,Len(filename)-start+1)
 GetExtName=extName
end Function
'----------------------------------------------------------
Function nGetExp(nNumber)
'功能:返回给定数据的位数
 Dim nCount,nRet
 nCount=1
 nRet=0
 nRet=CInt(nNumber/10)
 If nRet>0 and (nNumber Mod 10)>=5 Then
  nRet=nRet-1
 End If
 
 If nRet>0 Then
  nCount=nCount+nGetExp(nRet)
 End If
 nGetExp=nCount
End Function

群贤毕至

访客