e2e4au 0 Posted May 2, 2005 This script must be placed in the system search path to work. If you compile it copy the EXE into the Windows folder. ;MassRename ;Run from command prompt ;Sytnax - massrename "Path" or CD Extension Newname Count ; EG: massrename CD jpg "Singapore Holiday 1 ; Result - Will rename all JPG file to Sinagpore Holiday000N.jpg #include <Process.au3> #include <Array.au3> ; Global Variables. Dim $Para1 Dim $Para2 Dim $Para3 Dim $Para4 Dim $Para5 Dim $CurrentActiveDirectory = StringUpper(@WorkingDir) Dim $FileList[1] ; Will hold all file names to be renamed. Dim $Search ; Used to hold the extension ie: *.BMP Main() Func Main() ShowHelp($Para1) CheckDir() EndFunc ;==>Main ;----------------------------------------------------- Func ShowHelp(ByRef $Error) Local $1, $Error $Para1 = $CmdLine[0] ; No of Parameters Local $Help1 = StringFormat("%s", "MassRename<Space>""Path""<Space>File Extension<Space>Name<Space>Start Number") Local $Help2 = StringFormat("%s", "Path = ""C:\MyFolder\MyImages\Holiday\Blah"" OR cd for Current Directory") Local $Help3 = StringFormat("%s", "File Extension = What group of files do you want to rename --> JPG or MPEG or WMF or BMP") Local $Help4 = StringFormat("%s", "Name = What name do you want all the files to begin with --> NZ_Holiday or Photo or XmasParty") Local $Help5 = StringFormat("%s", "Start Number = The very first number in the rename sequence --> 0001 or 01000 ( This will increase by 1 for each file)") Local $Help6 = StringFormat("%s", "EG: MassRename<Space>""C:\My Documents\My Images""<Space>BMP<Space>DesktopImage<Space>001") Local $Help7 = StringFormat("%s", "EG: This works in the current directory --> MassRename<Space>CD<Space>BMP<Space>DesktopImage<Space>001") Local $i ; Test for the correct amount of parameters Select Case $Para1 = 4 $Para2 = $CmdLine[1] ; Path $Para3 = $CmdLine[2] ; File Extension $Para4 = $CmdLine[3] ; Name $Para5 = $CmdLine[4] ; Count Var $1 = StringIsInt($Para5) If $1 = 1 Then Return Else MsgBox(0, "ERROR", "The FOURTH parameter can only hold numbers - Please try again") Exit EndIf Case $Para1 = 0 MsgBox(0, "Syntax", $Help1 & @CRLF & @LF & $Help2 & @CRLF & @LF & $Help3 & @CRLF & @LF & $Help4 & @CRLF & @LF & $Help5 & @CRLF & @LF & $Help6 & @CRLF & @LF & $Help7) Exit Case $Para1 = 3 MsgBox(0, "ERROR", "You must pass 4 parameters before I will work" & @CRLF & @LF & "MASSRENAME path file extension name start number" & @CRLF & @LF & "massrename C:\MyPhotos BMP Holiday 001 OR" & @CRLF & @LF & "CD = Current Directory" & @CRLF & @LF & "massrename CD JGP CarRace 0010" & @CRLF & @LF & "You typed" & @CRLF & @LF & $CmdLine[1] & @CRLF & $CmdLine[2] & @CRLF & $CmdLine[3]) Exit Case $Para1 = 2 MsgBox(0, "ERROR", "You must pass 4 parameters before I will work" & @CRLF & @LF & "You typed" & @CRLF & @LF & $CmdLine[1] & @CRLF & $CmdLine[2]) Exit $Para1 = 1 MsgBox(0, "ERROR", "You must pass 4 parameters before I will work" & @CRLF & @LF & "You typed" & @CRLF & @LF & $CmdLine[1]) Exit Case $Para1 > 4 MsgBox(0, "Syntax", $Help1 & @CRLF & @LF & $Help2 & @CRLF & @LF & $Help3 & @CRLF & @LF & $Help4 & @CRLF & @LF & $Help5 & @CRLF & @LF & $Help6 & @CRLF & @LF & $Help7) Exit Case $Error = 1 MsgBox(0, "ERROR", "You must pass 4 parameters before I will work") Exit Case $Error = 2 MsgBox(0, "ERROR", "You must pass 4 parameters before I will work" & @CRLF & @LF & "You typed" & @CRLF & @LF & $CmdLine[1] & @CRLF & $CmdLine[2]) Exit Case $Error = 3 MsgBox(0, "ERROR", "You must pass 4 parameters before I will work" & @CRLF & @LF & "MASSRENAME path file extension name start number" & @CRLF & @LF & "massrename C:\MyPhotos BMP Holiday 001 OR" & @CRLF & @LF & "CD = Current Directory" & @CRLF & @LF & "massrename CD JGP CarRace 0010" & @CRLF & @LF & "You typed" & @CRLF & @LF & $CmdLine[1] & @CRLF & $CmdLine[2] & @CRLF & $CmdLine[3]) Exit EndSelect EndFunc ;==>ShowHelp ;----------------------------------------------------- Func CheckDir() Local $Path $Path = StringUpper($CmdLine[1]) Select Case $Path = "CD" GetNames($CurrentActiveDirectory) Case $Path <> "CD" GetNames($Path) EndSelect EndFunc ;==>CheckDir ;----------------------------------------------------- Func Rename(ByRef $Path) Local $i, $NewName, $Count, $Path, $Complete $Count = UBound($FileList, 1) - 1 For $i = 1 To UBound($FileList, 1) - 1 $NewName = StringUpper(StringFormat("%s%s%04d%s%s", $Path, $Para4, $Para5, ".", $Para3)) $Complete = StringUpper(StringFormat("%s%s", $Path, $FileList[$i])) FileMove($Complete, $NewName) $Para5 = $Para5 + 1 Next MsgBox(0, "FINISHED", "Process completed " & $Count & " files were renamed") EndFunc ;==>Rename ;----------------------------------------------------- Func GetNames(ByRef $CD) Local $1, $File, $a, $Loop, $CD, $Error, $Path Local $FileExtension $Loop = 0 ; Get all file names and place into an array If $Para1 < 2 Then $Error = $Para1 ShowHelp($Error) Else $CD = StringUpper($CmdLine[2]) $FileExtension = StringFormat("%s%s", "*.", $CmdLine[2]) $Path = StringFormat("%s%s", $CD, "\") $1 = StringFormat("%s%s%s", $CD, "\", $FileExtension) $Search = FileFindFirstFile($1) EndIf ; Check if the search was successful=0 If $Search = -1 Then MsgBox(0, "Error", "No files/directories matched the search pattern") Exit EndIf While $Loop = 0 $File = FileFindNextFile($Search) $a = StringUpper(StringRight($File, 3)) If $a = $CD Then ; Compares file extension before adding to array _ArrayAdd($FileList, $File) Else $Loop = 1 EndIf WEnd ; Close the search handle FileClose($Search) Rename($Path) EndFunc ;==>GetNames Share this post Link to post Share on other sites