Solved

VBScript to capture files < 1KB

Posted on 2009-04-07
2
347 Views
Last Modified: 2012-05-06
Hi,

I have a vbscript that will scan a directory and copy files that are less than 1 kb, depending on certain criteria.  It copies those files fine but it also copies the files that are larger than 1kb.
I copied the code below.  
Any help would be appreciated.

Thank you.
strTargetFolder = "c:\test1"
strTargetFolder2 = "c:\test2"
strSourceFolder = "c:\test"
arrDataToFind = Array("test1","test2","test3")
arrDataToFind2 = Array("test4","test5","test6")
Dim FSO, oFolder, oFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Const intForReading = 1
Set ofolder = FSO.GetFolder(strSourceFolder)
For Each oFile In oFolder.Files 
	Set objFile = FSO.OpenTextFile(oFile.Path, intForReading, False)
	strData = objFile.ReadAll
	objFile.Close
	Set objFile = Nothing
	If oFile.Size < 1024 Then
		' Check for the existence of any element from arrDataToFind
		boolMatch1 = False
		For Each strBit In arrDataToFind
			If Instr(LCase(strData), LCase(strBit)) > 0 Then
				boolMatch1 = True
				Exit For
			End If
		Next
		If boolMatch1 = True Then
			'Move file
			FSO.MoveFile oFile.Path, strTargetFolder
		End If
		' Check for the existence of any element from arrDataToFind2
		If boolMatch1 = False Then
			boolMatch2 = False
			For Each strBit In arrDataToFind2
				If Instr(LCase(strData), LCase(strBit)) > 0 Then
					boolMatch2 = True
					Exit For
				End If
			Next
			If boolMatch2 = True Then
				'Move file
				FSO.MoveFile oFile.Path, strTargetFolder2
			End If
		End If
		' Now check if nothing was found, delete the file
		If boolMatch1 = False And boolMatch2 = False Then
			FSO.Deletefile oFile.Path, True
		End If
	End If
Next
Set FSO = Nothing

Open in new window

0
Comment
Question by:cbones
2 Comments
 
LVL 2

Accepted Solution

by:
AlvinLim84 earned 500 total points
ID: 24087832
I think you need to add \ for folder listing at end of the path line. See below. Hope this will help to solve your problem.
strTargetFolder = "c:\test1\"
strTargetFolder2 = "c:\test2\"
strSourceFolder = "c:\test\"
arrDataToFind = Array("test1","test2","test3")
arrDataToFind2 = Array("test4","test5","test6")
Dim FSO, oFolder, oFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Const intForReading = 1
Set ofolder = FSO.GetFolder(strSourceFolder)
For Each oFile In oFolder.Files 
	Set objFile = FSO.OpenTextFile(oFile.Path, intForReading, False)
	strData = objFile.ReadAll
	objFile.Close
	Set objFile = Nothing
	If oFile.Size < 1024 Then
		' Check for the existence of any element from arrDataToFind
		boolMatch1 = False
		For Each strBit In arrDataToFind
			If Instr(LCase(strData), LCase(strBit)) > 0 Then
				boolMatch1 = True
				Exit For
			End If
		Next
		If boolMatch1 = True Then
			'Move file
			FSO.MoveFile oFile.Path, strTargetFolder
		End If
		' Check for the existence of any element from arrDataToFind2
		If boolMatch1 = False Then
			boolMatch2 = False
			For Each strBit In arrDataToFind2
				If Instr(LCase(strData), LCase(strBit)) > 0 Then
					boolMatch2 = True
					Exit For
				End If
			Next
			If boolMatch2 = True Then
				'Move file
				FSO.MoveFile oFile.Path, strTargetFolder2
			End If
		End If
		' Now check if nothing was found, delete the file
		If boolMatch1 = False And boolMatch2 = False Then
			FSO.Deletefile oFile.Path, True
		End If
	End If
Next
Set FSO = Nothing

Open in new window

0
 

Author Comment

by:cbones
ID: 24088067
AlvinLim84,

I do have the \ after the folder name.  When I copied the code over I must have erased it by accident.  
Sorry about that.

0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Where do I learn ES6? 3 70
MsgBox 4 61
Error while running Get-NetConnectionProfile within Windows 7 PowerShell 8 44
powershell md/mkdir/New-item   -Quiet 10 48
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

831 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