Program to search for all files that have a designated text string or
strings. Windows Explorer has a search
feature for this purpose. I have used it for years and depend on it. However, the feature does not
work as expected in the new operating systems. On Windows XP, Vista, and
Windows 7, Windows Explorer
search for files that contain a specified text string. Some files may be found and there are no error
or warning messages. But not all files that contain the text string are found. In fact most files are
Research indicates an indexing service must be configured to enable this search functionality in Windows Explorer. I assume this would be at the cost of performance. I have not taken the time to learn how to configure the indexing service. I would need to configure the service on every computer where I might search. You must specify in advance which file extensions will be indexed. I'm not sure how this would work in a network environment.
This program uses the FileSystemObject in a recursive subroutine to enumerate all files in the specified path. Each file is opened with a TextStream object and searched for the designated string or strings. This does not seem like it would be an efficient method. However, it is dependable and works. If the program reports that no files are found with the specified text string(s), you can be sure that no files have been missed.
The syntax to run the program at a command prompt would be:
cscript FindFiles.vbs <string> <path> <extension> <searchSubs> <caseSensitive>
<string> is the string or strings to be searched
for. This is the only required parameter.
Enclose any string in quotes if it contains spaces. All strings are case
insensitive. No string can contain embedded quote characters. You can
specify up to three strings, delimited by the semicolon character,
";". If any string has an embedded semicolon,
escape it with the backslash, "\".
The program is not designed to find files that contain any one of several
strings. Each file output by the program will contain all of the specified
strings. If more than three strings are specified the program aborts.
<path> is the optional path to be searched. Enclose in quotes if it contains spaces. The current path is used if no path is specified. You can also specify "." for the current directory and ".." for the parent of the current directory.
<extension> is an optional comma delimited list of file extensions to be searched, with no spaces. Use "." to indicate all extensions, which is the default.
<searchSubs> is an optional Boolean to indicate if all sub folders are to be searched. "T" or "True" means to search all sub folders. "F" or "False" means to only search the specified folder. The default is "False".
<caseSensitive> is an optional Boolean to
indicate if the search is case sensitive. "T"
or "True" means the search is case sensitive
(for all strings specified). "F" or
"False" means the search is case insensitive,
which is the default.
The program outputs the name and path of every file found to contain all of the specified string(s), one file per line. The program also displays the file last modified date and size in bytes in parentheses. Then the program outputs the number of files found. You can redirect the output to a text file. Examples of the syntax follow:
cscript FindFiles.vbs WinNT:;LDAP: "c:\My Folder\Scripts" vbs true
cscript FindFiles.vbs "My Server" . vbs,txt,csv f f
cscript FindFiles.vbs NameTranslate c:\Scripts . t
cscript FindFiles.vbs "Test \; 2";Test3\;;Test4 c:\Scripts vbs
Since this program was written, I have discovered the FindStr command. This new utility can also be used to find files that contain a specified string. However, my testing indicates it is no faster than this VBScript program.
The output from the program might look similar to below:
cscript //nologo FindFiles.vbs ADODB;NameTranslate c:\Scripts vbs,txt t t
C:\Scripts\TestProgram1.vbs (8/22/2009 2:23:12 PM 12,466)
C:\Scripts\Example.vbs (10/3/2008 9:03:12 AM 743)
C:\Scripts\Test\Simple.txt (2/13/2009 9:32:32 AM 1,203)
C:\Scripts\West\FindUsers.vbs (4/17/2009 3:04:21 PM 4,398)
4 files found with string ADODB;NameTranslate
FindFiles.txt <<-- Click here to view or download the program