Script to map folder names to another directory, then rename the source

Posted on 2014-02-06
Last Modified: 2014-02-08
I'm looking for help with some scripting that would accomplish the following.

Directory A has a series of folders.
Directory B has a series of folders, perhaps more, than DirA.

I would need to be able to pair a folder in DirA with a folder in DirB, and map the results to a .csv which would then rename the folders in DirB to match it's pair in DirA.  Also at this time, any unpaired folder would be moved to a specified location, marked as 'unsorted'.   As you might imagine, I have a large number of folders to merge and would need the names to match to accomplish this.

The primary challenge I am having is the pairing of folders.  I'm not well versed enough to know a clean way to go about this but I think the easiest method would be for each folder in DirA, it would ask for the matching folder name in DirB (which could be typed and finished with the Tab key); but perhaps a script guru might have a better idea.

Appreciate the advice in advance.
Question by:Uptime Legal Systems
  • 3
  • 3
LVL 22

Assisted Solution

rspahitz earned 500 total points
ID: 39841019
This can be done relatively easily in Excel after you import the list (or otherwise use a VBA to load the contents into a spreadsheet.)
After you have the data in place (e.g. columns A and B) you can add a formula in column C to tell you if each entry in column A exists in column B.

C1 formula =IF(ISNA(MATCH(A1,B:B,0)),"missing " & A1,"")

That should take care of one part of the request: identifying folders in A that are not in B

Does that help?

Author Comment

by:Uptime Legal Systems
ID: 39841763
That's a pretty nice formula, I think the problem would be that since the names in A won't be the same as B, it wouldn't match.

I can manually go in and clean out a CSV, but was hopeful there might be a way to get the CSV lists in with the pairing already completed (so it could all be run as part of one script.)
LVL 22

Accepted Solution

rspahitz earned 500 total points
ID: 39842239
So you're looking for something that lets you manually connect items in A with items in B and have a tool put those connections in a CSV file?
Since there are no tools I know to let you do this, one could be written, but that makes your entire request a bit bigger than a simple task.

Is it a one-time process or will this be repeated over and over?
Are you OK using Excel to do this? Maybe you want a more permanent tool written in VB.Net?  (Do you have either Excel or VB.Net or do you have an interest in getting VB.Net on your system?)

In Excel, I would write some VBA to let you click on two cells and have it build the relationship for you, which can then be written to a CSV file when done.
In VB.Net, I'd probably let you do a drag-and-drop of one file name onto another to build the links.

After the mapping is done, renaming the parts and relocating the unmatched items would be relatively easy in either tool.
ScreenConnect 6.0 Free Trial

Discover new time-saving features in one game-changing release, ScreenConnect 6.0, based on partner feedback. New features include a redesigned UI, app configurations and chat acknowledgement to improve customer engagement!


Author Comment

by:Uptime Legal Systems
ID: 39842565
Yes, connect items in A with B, based off manual mapping.

It is a process that I would be repeating several times with (tens of) thousands of folders.

I would be completely fine doing this in excel, but my VB script skills aren't quite up to the task.  I can try and 'franken-script' something together and see how it goes, unless you have some insight or a bare bones script to use as reference.

Author Closing Comment

by:Uptime Legal Systems
ID: 39843009
I'll dig in and see what I can come up with.  Appreciate the advice from both.
LVL 22

Expert Comment

ID: 39844503
FYI, the following code will show all folders in a given directory (in this case, the one in the Rob document folder).  the results will be placed in the "immediate" window (Ctrl+G):
Sub showAllFolders()
    Dim path As String
    path = "C:\Users\Rob\Documents"
    Dim file As String
    file = Dir(path & "\", vbDirectory)
    Do While file <> ""
        If FileSystem.GetAttr(path & "\" & file) = vbDirectory Then
            Debug.Print file
        End If
        file = Dir

End Sub

Open in new window


Featured Post

Best Practices: Disaster Recovery Testing

Besides backup, any IT division should have a disaster recovery plan. You will find a few tips below relating to the development of such a plan and to what issues one should pay special attention in the course of backup planning.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Displaying an arrayList in a listView using the default adapter is rarely the best solution. To get full control of your display data, and to be able to refresh it after editing, requires the use of a custom adapter.
Although it can be difficult to imagine, someday your child will have a career of his or her own. He or she will likely start a family, buy a home and start having their own children. So, while being a kid is still extremely important, it’s also …
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question