dickep Posted February 17, 2011 Share Posted February 17, 2011 (edited) OK, I have a lot of files I renamed to the same name using Windows XP file rename. they are renamed "filename (0).ext" through "filename (213).ext" However, when I do anything with them, they are not sorted correctly. 1 has 10 after it and so on. SO, my thought was to try to rename all the numbers to 3 digits - the 1- 9 being 001 - 009 and, well you get the idea. I just can't get my hands on how to rename the actual file name like this. I can get the file name but how to rename it???? Make sense - probably not but would appreciate any help I can get. the main reason for renaming the files is the ArraySort routine does not sort it correctly. XP does, but that does not stay sorted. Thanks E Edited February 17, 2011 by dickep Link to comment Share on other sites More sharing options...
Varian Posted February 17, 2011 Share Posted February 17, 2011 $File = @DesktopDir & '\New Text Document (2).txt' $Digit = StringRegExpReplace($File, '^(.+)\((\d+)\)(.+)$', '$2') $NewFileName = StringRegExpReplace($File, '^(.+)\((\d+)\)(.+)$', '$1(' & StringFormat('%03u', $Digit) & ')$3') MsgBox(0, 'Results', 'Digit(s) = ' & $Digit & @LF & 'New Name = ' & $NewFileName) Link to comment Share on other sites More sharing options...
dickep Posted February 17, 2011 Author Share Posted February 17, 2011 But does this actually replace the file name on the hard disk??? Maybe I am missing something but I don't see anything in this to change the actual file name and that is what I really need to do. Thanks for the insight as to how to change the read file name. E Link to comment Share on other sites More sharing options...
guinness Posted February 17, 2011 Share Posted February 17, 2011 (edited) Look at FileMove() too. I (and Varian probably) presumed that you knew how to Rename Files in AutoIt E.G. FileMove($File, $NewFileName, 8) Edited February 17, 2011 by guinness UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
Varian Posted February 17, 2011 Share Posted February 17, 2011 Look at FileMove() too. I (and Varian probably) presumed that you knew how to Rename Files in AutoIt E.G. FileMove($File, $NewFileName, 8) yeah, I assumed the problem was how to get the naming structure correct. Try this, replacing $Directory with the directory you which to search for your files...this is not a recursive search, BTW. #include <Array.au3> #include <File.au3> Local $Directory = "YourDirectoryToSearch" Local $fArray = _FileListToArray($Directory, "*", 1) If @error Then Exit For $i = $fArray[0] To 1 Step -1 If Not StringRegExp($fArray[$i], '\(\d+\)', 0) Then _ArrayDelete($fArray, $i) ;check if the file has "(some digit(s))" in it Next $fArray[0] = UBound($fArray) - 1 If $fArray[0] = 0 Then Exit _ArrayDisplay($fArray, "List of Files to be Renamed") For $i = 1 To $fArray[0] If Not StringRegExp($fArray[$i], '\(\d+\)', 0) Then ContinueLoop ;check if the file has "(some digit(s))" in it If Not _RenameFile($fArray[$i]) Then msgBox(262208, "Issue", "Failed renaming " & $fArray[$i]) Next Func _RenameFile($iFile) Local $Digit = StringRegExpReplace($iFile, '^(.+)\((\d+)\)(.+)$', '$2') Local $NewFileName = StringRegExpReplace($iFile, '^(.+)\((\d+)\)(.+)$', '$1(' & StringFormat('%03u', $Digit) & ')$3') If $NewFileName <> $iFile And Not FileExists($NewFileName) Then Return FileMove($iFile, $NewFileName) EndIf EndFunc Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now