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.
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.


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

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Entering a date in Microsoft Access can be tricky. A typo can cause month and day to be shuffled, entering the day only causes an error, as does entering, say, day 31 in June. This article shows how an inputmask supported by code can help the user a…
A short article about problems I had with the new location API and permissions in Marshmallow
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …

789 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