Solved

script to parse and move million files to sub directories

Posted on 2008-10-06
4
200 Views
Last Modified: 2012-05-05
we have a folder, off a single root folder that has approx 1 million files, we want a script or utility that can in groups of say 500, starting from beginning to end based on any sort order, move the files to subdirectories, say the sub directories will be named 00001, 00002 and so on

does anyone have any ideas
0
Comment
Question by:ryanrupert
4 Comments
 
LVL 53

Expert Comment

by:Dhaest
ID: 22657015
0
 
LVL 2

Accepted Solution

by:
simeonf earned 250 total points
ID: 22658437
Hi Ryan,

Give this a try, depending how unique the start of the filenames are.. I used it for sorting many many game roms in to folders based on the name so they could be more easily located. This script moves files to a subfolder based on the first 2 characters of the filename (you could split into more folders by basing it on 3 or more characters).

Otherwise use similar logic with a counter increment for each file in the folder, and when you hit a threshold create a new folder, move new files to there and reset the incremeneter.

Let me know if you want a hand coding this up. And of course give it a good test before running on production data!

Cheers,
Simeon


on error resume next
 

Dim objFSO

Set objFSO = CreateObject("Scripting.FileSystemObject")
 

Dim strFromFolder

strSourceFolder = "C:\FileSource"
 

Dim strToFolder

strToFolder = "C:\FileDestination"
 

Dim objFolder

Set objFolder = objFSO.GetFolder(strCurrentFolder)
 

Dim objFile
 

For Each objFile In objFolder.Files

	'check if the folder exists, if not create it

	if not objFSO.FolderExists(strToFolder + "\" + left(objfile.name, 2)) then

		objFSO.CreateFolder(strToFolder + "\" + left(objfile.name, 2))

	end if

	newPath =  strToFolder & left(objfile.name, 2) & "\" & objFile.name

	objFSO.MoveFile objFile.Path, newPath

Next
 

'cleanup

set objFSO = nothing

set objFolder = nothing

set objFile = nothing

Open in new window

0
 

Author Comment

by:ryanrupert
ID: 22660036
thanks for the responses, in the interest of full disclosure, I do not have the skills to edit vbscript in any degree
0
 
LVL 38

Assisted Solution

by:Shift-3
Shift-3 earned 250 total points
ID: 22660514
This is also possible in batch.

Paste the script below into a text file with a .cmd extension.  Customize the value of the folder variable with the location of the folder containing the files.  Running the script will move the files into numbered subfolders.

Please test this carefully before using it in a production environment.


@echo off

setlocal enabledelayedexpansion
 

set folder=c:\files
 

set filecount=0

set foldercount=1

set maxfiles=500
 

for /F "tokens=*" %%G in ('dir "%folder%" /A:-D /B') do (

 set /A filecount+=1

 set target=0000!foldercount!

 set target=!target:~-5!

 if not exist "%folder%\!target!" md "%folder%\!target!"

 move "%folder%\%%G" "%folder%\!target!"
 

 if [!filecount!]==[%maxfiles%] (

  set /A foldercount+=1

  set filecount=0

 )

)

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

NTFS file system has been developed by Microsoft that is widely used by Windows NT operating system and its advanced versions. It is the mostly used over FAT file system as it provides superior features like reliability, security, storage, efficienc…
In this article, I will show you HOW TO: Perform a Physical to Virtual (P2V) Conversion the easy way from a computer backup (image).
Windows 8 came with a dramatically different user interface known as Metro. Notably missing from that interface was a Start button and Start Menu. Microsoft responded to negative user feedback of the Metro interface, bringing back the Start button a…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…

867 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

12 Experts available now in Live!

Get 1:1 Help Now