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 51

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 51

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

LVL 51

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)


Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

LVL 51

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 51

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

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Deploying a Microsoft Access application in a Citrix environment is not difficult but takes a few steps. However, Citrix system people are often of little help, as they typically know next to nothing about Access. The script provided here will take …
Create and license users in Office 365 in bulk based on a CSV file. A step-by-step guide with PowerShell script examples.
Here's a very brief overview of the methods PRTG Network Monitor ( offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

706 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now