Search folders and rename and move the files to another folder

Posted on 2011-09-12
Last Modified: 2012-05-12
We have the following situations:
We are scanning documents on a large Scanner to a certain folder(s), example …\share\
Below the main folders, the system generates automatically subfolders based on date and a running number, examples:


Then the next day, it looks like this:


etc. etc.

Within these folders, we have .tif documents.

Every night, we need to move these files from the subfolders to a folder called for example:  “transfer”

All the files in the subfolders need to be renamed with a running number, i.e. 0001, 0002, 0003, 0004 etc.  The actual names are not important, only that a file that already exists will not be overwritten.

So here comes the question:

How can we create a script where we can search for within subfolders for .tif files and move them?  After we have moved them, we need to delete the folders.

I have been searching for fso recursive but so far, I have been out of luck....
Question by:terra-it
  • 6
  • 4
LVL 53

Expert Comment

by:Bill Prew
ID: 36522177
Would the "running number" start at 0001 each time the job runs, or does it somehow need to remember where it left off last time?

How long do files stay in the transfer location, and once they are moved out can their file names be reused.

In the interest of uniqueness, why not make the file names in the transfer location the name of the folder the file came from (folderdatetoday-001) and then add a sequence number on the end of that?


Author Comment

ID: 36522207
It does not have to "remember" where it left off because each nicht, we will empty the folder with the "moved" data.

Names can be reused.

We could also use the foldernames as filenames, no problem.

LVL 53

Expert Comment

by:Bill Prew
ID: 36522502
See how this works for you. Save as a VBS file and adjust the two paths near the top. Also, right now it will only display the files it would move and the names involved. After you run it in this mode if it looks good you can uncomment the actual Move line to move the files. This script assumes the transfer directory already exists. Also wasn't sure if you wanted the folder to be deleted after the files were moved, so I added that line but left it commented out.

sBaseDir = "c:\ee\EE27303021\base"
sXferDir = "c:\ee\EE27303021\xfer"

iNumber = 0
Set oFSO = CreateObject("Scripting.FileSystemObject")
For Each oFolder In oFSO.GetFolder(sBaseDir).SubFolders
   For Each oFile In oFolder.Files
      iNumber = iNumber + 1
      Wscript.Echo "Moving [" & oFile.Path & "] to [" & sXferDir & "\" & oFolder.Name & "-" & LeftPad(iNumber, 3, "0") & "]"
      ' oFile.Move sXferDir & "\" & oFolder.Name & "-" & LeftPad(iNumber, 3, "0")

Function RightPad( strText, intLen, chrPad )
  RightPad = Left( strText & String( intLen, chrPad ), intLen )
End Function

Function LeftPad( strText, intLen, chrPad )
  LeftPad = Right( String( intLen, chrPad ) & strText, intLen )
End Function

Open in new window

Netscaler Common Configuration How To guides

If you use NetScaler you will want to see these guides. The NetScaler How To Guides show administrators how to get NetScaler up and configured by providing instructions for common scenarios and some not so common ones.

LVL 52

Expert Comment

by:Joe Winograd, EE MVE
ID: 36522722
All of my scripting needs have been met by AutoHoteky:

It is an excellent product, extremely robust, and FREE! Regards, Joe

Author Comment

ID: 36522914
Hi bp
I did change the 2 lines to my paths:
sBaseDir = "D:\HabelDocuments\DOC010911"
sXferDir = "D:\xfer"

and ran the script.  No failure, no message.
Then I uncommented the "move" and ran it, no failure, no message, no files moved
Then I uncommented the "Delete" and ran it, no failure, no message, no files moved, no deletion of folder.

Do we search for all types of files, we are not defining specifically the .tif?

In the script I would need to search within all folders that start with DOC* because as said before, the folders will be named today as DOC1-001, DOC1-002, DOC1-003 and then tomorrow or next time something will be scanned, you have more folders, example DOC2-001, DOC2-002 in addition to the ones created above..

Possible to take a look if there is something that I forgot or if there is somewhere a spelling error?  I did not see any and the script runs, but no action..

Script would be run every night (I wrote before "nicht", sorry)


LVL 53

Accepted Solution

Bill Prew earned 500 total points
ID: 36522981
The sBaseDir should be the "…\share", not the "…\share\folderdatetoday-001", I suspect "D:\HabelDocuments\DOC010911" is one of the daily folders, not the parent where all dailys reside? The script looks for subfolders in the sBaseDir to find all the day folders.

I suspect you want this, but without knowing your folder structure I can't be positive.

sBaseDir = "D:\HabelDocuments"


Author Comment

ID: 36523016
jepp, found the failure... testing again,, sorry...

Author Comment

ID: 36523091
brilliant, working great, BUT, always these "buts"...
The new files in the folders are missing the extensions, that is .tif

Where could I add that?  Must be a variable, or?


Author Comment

ID: 36523149
Fixed, added the extension after:

oFile.Move sXferDir & "\" & oFolder.Name & "-" & LeftPad(iNumber, 3, "0") & ".tif"

Works perfectly

Thanks a lot, this was really a superb help to my long searching problem...


Author Closing Comment

ID: 36523158
Brilliant solution, only Experts in this KB
LVL 53

Expert Comment

by:Bill Prew
ID: 36523345
Ah yes, extension was an oversight, sorry, glad you worked that out.  Thanks for the comments.


Featured Post

Are your AD admin tools letting you down?

Managing Active Directory can get complicated.  Often, the native tools for managing AD are just not up to the task.  The largest Active Directory installations in the world have relied on one tool to manage their day-to-day administration tasks: Hyena. Start your trial today.

Question has a verified solution.

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

Synchronize a new Active Directory domain with an existing Office 365 tenant
The following article is intended as a guide to using PowerShell as a more versatile and reliable form of application detection in SCCM.
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

810 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