Sign in to follow this  
Followers 0
pcmagas

Help for mass renaming files

8 posts in this topic

hello guys. i am new member in your forum.

I want your help for making a script that renames all the files in a folder.

Example: we have a folder path like C:\test and it has some files in it. The thing i want the script to do is to take the first file in the folder and rename it and then the next file till the last file.

Thank you a lot,

Pcmagas

Share this post


Link to post
Share on other sites



hello guys. i am new member in your forum.

I want your help for making a script that renames all the files in a folder.

Example: we have a folder path like C:\test and it has some files in it. The thing i want the script to do is to take the first file in the folder and rename it and then the next file till the last file.

Thank you a lot,

Pcmagas

I am sure this has been asked before.... anyway: open the helpfile and look for FileFindFirst(), FileFindNext() and FileMove()

Enjoy your research,

Jos


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Or have a look at the example of _FileListToArray


Scripts & functions Organize Includes Let Scite organize the include files

Yahtzee The game "Yahtzee" (Kniffel, DiceLion)

LoginWrapper Secure scripts by adding a query (authentication)

_RunOnlyOnThis UDF Make sure that a script can only be executed on ... (Windows / HD / ...)

Internet-Café Server/Client Application Open CD, Start Browser, Lock remote client, etc.

MultipleFuncsWithOneHotkey Start different funcs by hitting one hotkey different times

Share this post


Link to post
Share on other sites

thank you a lot for your answers but i am new in scripting and i cannot figure out exactly how to make it work:

This is my code:

dim $animepath = inputbox( " Anime Path", "The path for the anime folder:")
$animename = inputbox( " Anime Name", "The name of the anime: ")
$animeartist = "ani-planet.net"
$animeartist2 = "dl@ani-planet.net"
Dim $FileCount = 0
$FileCount2 = 0


Func ScanFolder($SourceFolder)
    Local $Search
    Local $File
    Local $FileAttributes
    Local $FullFilePath

    $Search = FileFindFirstFile($SourceFolder & "\*.*")

    While 1
        If $Search = -1 Then
            ExitLoop
        EndIf

        $File = FileFindNextFile($Search)
        If @error Then ExitLoop

        $FullFilePath = $SourceFolder & "\" & $File
        $FileAttributes = FileGetAttrib($FullFilePath)


        If StringInStr($FileAttributes,"D") Then
            ScanFolder($FullFilePath)
        Else
            LogFile($FullFilePath)
        EndIf

    WEnd

    FileClose($Search)
EndFunc

Func LogFile($FileName)
    FileWriteLine(@ScriptDir & "\FileList.txt",$FileName)
    $FileCount += 1
    ToolTip($FileName,0,0)
EndFunc


ScanFolder($animepath)

MsgBox(0,"Done","Folder Scan Complete.  Scanned " & $FileCount & " Files")
MsgBox(0,"Done",$FileCount & " Files")
$FileCount2 = $FileCount

Func FileRename($SourcePath)
    for $FileCount= 1 to $FileCount= $FileCount2
            MsgBox(0, "Count down!", $FileCount)
Next
MsgBox(0,"", "Blast Off!")
EndFunc

Can you help me fix it a bit especially in the filerename fuction. Sorry for the message boxes in the file rename fuction but i am still testing it :).

Thank you a lot

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Hi,

to start with:

#include <file.au3>

Global $filearray, $dirarray, $sourcepath = "c:\test", $dirfile = @ScriptDir & "\dir.txt"

If FileExists ($dirfile) Then FileDelete ($dirfile)

_getdir ($sourcepath)
_getfile ()

Func _getdir ($startpath)
    Local $temparray
    $temparray = _FileListToArray ($startpath, "*", 2)
    If @error Then
        Return
    Else
        $file = FileOpen ($dirfile, 1)
        For $i = 1 To UBound ($temparray) - 1
            FileWriteLine ($file, $startpath & "\" & $temparray [$i])
        Next
        FileClose ($file)
        For $i = 1 To UBound ($temparray) - 1
            _getdir ($startpath & "\" & $temparray [$i])
        Next
    EndIf
EndFunc

Func _getfile ()
    _FileReadToArray ($dirfile, $dirarray)
    For $i = 1 To UBound ($dirarray) - 1
        FileRename ($dirarray [$i])
    Next
EndFunc

;example for renaming extension from .* to .bak
Func FileRename($path)
    $filearray = _FileListToArray ($path, "*.*", 1)
    If @error = 4 Then
        MsgBox (0,"",$path & ": No files found!")
    Else
        For $i = 1 To UBound ($filearray) - 1
            MsgBox (0,"Move....", "Source: " & $path & "\" & $filearray [$i] & @CRLF & "Dest: " & $path & "\" & _
            StringLeft ($filearray [$i], StringInStr ($filearray [$i], ".") - 1) & ".bak")
            ;FileMove ($sourcepath & "\" & $filearray [$i], $sourcepath & "\" & StringLeft ($filearray [$i], StringInStr ($filearray [$i], ".") - 1) & ".bak")
        Next
    EndIf
EndFunc

;-))

Stefan

Edited by 99ojo

Share this post


Link to post
Share on other sites

hello thank you for you reply was very usefull but i can not modify this part of the code

Func FileRename($path)
    $filearray = _FileListToArray ($path, "*.*", 1)
    If @error = 4 Then
        MsgBox (0,"",$path & ": No files found!")
    Else
        For $i = 1 To UBound ($filearray) - 1
            MsgBox (0,"Move....", "Source: " & $path & "\" & $filearray [$i] & @CRLF & "Dest: " & $path & "\" & _
            StringLeft ($filearray [$i], StringInStr ($filearray [$i], ".") - 1) & ".bak")
            ;FileMove ($sourcepath & "\" & $filearray [$i], $sourcepath & "\" & StringLeft ($filearray [$i], StringInStr ($filearray [$i], ".") - 1) & ".bak")
        Next
    EndIf
EndFunc

This fuction make the extension from *.* to .bak but it doest work for all the files just for the first . Can you please explain to me how to make it change the filename from the first till the last file?

Thanks a Lot

Sorry for my noobness :)

Share this post


Link to post
Share on other sites

Hi,

it should. So you have to debug the array:

1) Add #include <array.au3> at the beginning of your script

2) After line $filearray = _FileList.... add a _ArrayDisplay ($filearray).

This will show your files, that are in the given $path (hopefully).

The renaming process is only working with files of following structure:

file name what ever you want.xxx

You must have no dot in between filename and a .xxx as extension.

;-))

Stefan

Share this post


Link to post
Share on other sites

thank you a lot 99ojo i have made it work :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0