Can you create a RegEx using folder structures in file names?
-
Saturday, April 14, 2012 3:38 AM
I have many folders structured thus:-
Author1
--first book title.txt
--second book title.rtf
--third book
----third book Title.doc
----Cover.jpgAuthor2
--Another book title.epubetc.
What I want:-
Author1
--first book title - Author1.txt
--second book title - Author1.rtf
--third book
----third book Title - Author1.doc
----Cover.jpgIs there a RegEx that will append an " - " and the Author to each book title using the Multi Rename Tool? The first 2 books are difficult enough and I suspect the third book structure is impossible?
There can be 1 to many book titles and different file types involved in each Author folder.
I also suspect that RegExs only work at one level :(
I'll be more than happy with any solution that will save me manual effort :)
I have about 400 authors and I have already done a couple of hundred manually
Thanks in anticipation :D
All Replies
-
Monday, April 16, 2012 8:31 AMModerator
Hi Louwind,
Welcome to the MSDN Forum.
Actually, I don't suggest you to use Regular expression.
Please try the following code:
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click Dim dir As DirectoryInfo = New DirectoryInfo("D:\ChangeAuthors") For Each subDir In dir.GetDirectories() RenameFiles(subDir.FullName, subDir.Name) Next End Sub Private Sub RenameFiles(filePath As String, authorName As String) Dim dir As DirectoryInfo = New DirectoryInfo(filePath) For Each f In dir.GetFiles() My.Computer.FileSystem.RenameFile(f.FullName, f.Name & " - " & authorName & "." & f.Extension) Next For Each dic In dir.GetDirectories() RenameFiles(dic.FullName, authorName) Next End Sub
During my test, my folder structure is like this:
I hope this will be helpful.
Best regards,
Mike Feng
MSDN Community Support | Feedback to us
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- Marked As Answer by Mike FengMicrosoft Contingent Staff, Moderator Saturday, April 21, 2012 7:45 AM
-
Monday, April 16, 2012 9:49 AM
Try
"^(?<head>\w+\sbook\s)(?=\w+\.(txt|rft|doc|equb))(?<title>.+)$"
Then use Replace method as follows(Use replace method):
Replace(input, @"${head}-${title}");string
pattern = @"(?<head>\w+\sbook\s)(?=[^.]+\.(txt|rft|doc|equb))(?<title>.+)";
Regex r = new Regex(pattern);
string input = @"first book aa.txt";
Console.WriteLine(r.Replace(input, @"${head}- ${title}"));
Please Mark it as answer, if it helps solve your problem.
- Edited by Phape Tuesday, April 17, 2012 5:33 AM

