Change File Extension

This Script changes all file extensions from one Extension to another.

You can choose the source and destination extensions.
The script runs recursively on all folders and sub folders of the source path.

'=*=*=*=*=*=*=*=*=*=*=*=*==*=*==*=*==*=
' Created by Assaf Miron
' Http://sites.google.com/site/assafmiron
' Date : 02/01/2010
' ChangeFileExtensions.vbs
'=*=*=*=*=*=*=*=*=*=*=*=*==*=*==*=*==*=
Option Explicit
' Change the Extension you want to Replace
Const CHANGE_FROM = ".png"
Const CHANGE_TO = ".jpg"

' Var Declaration - Don't Cahnge
Dim srcFolder
Dim objFSO, objFolder, oFolder
Dim colFiles

' Set the Source Folder to Begin With
srcFolder = "C:\Temp\Files"

' Object Sets - Don't Cahnge
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(srcFolder)
Set colFiles = objFolder.Files

' Changes Files Extensions in Source Folder
ChangeExtension colFiles
' Change the Extension for Each Sub Folder in the Source Folder
GetFilesFromSubFolders objFolder

' --- Subs ---
Sub GetFilesFromSubFolders(objRootFolder)
' Description : Sub will Recursevlly Check each folder for sub folders
' For Each Sub folder it will Extract the Files and Use the ChangeExtension
' to change the files Extension
' Input  : Root Folder Object
' Output : Recursive Call For Each Sub Folder - Change Files Extension
Dim oSubFolders, oSubFol
Dim colSubFolFiles
' Get the Sub Folders of the Root Folder
Set oSubFolders = objRootFolder.SubFolders
' Check that Folder has Sub Folders
If oSubFolders.Count > 0 Then
' For Each Sub Folder Call Recursevlly 
For Each oSubFol In oSubFolders
GetFilesFromSubFolders oSubFol
Next
End If
' Get the Files in the folder
Set colSubFolFiles = objRootFolder.Files
' Change Files Extensions in Folder
ChangeExtension colSubFolFiles
End Sub

Sub ChangeExtension(collectionSet)
' Description : Sub will Change the Extension 
' for Each File that has the Requested Extension
' Input  : Collection Set Object of Files
' Output : Changes the File Extension
Dim objFile
' For Each File in the Files Collection
For Each objFile In collectionSet
' Check if File has the Requested Extension
If InStr(objFile.Name,CHANGE_FROM) Then
' Checge the Extension
objFile.Name = Replace(objFile.Name,CHANGE_FROM,CHANGE_TO)
End If
Next
End Sub
' --- End Of Subs ---
Comments