VBScript Question

dfnkt

Senior member
May 3, 2006
435
0
76
I have a vbscript i've written that checks for a set of 55 fonts within C:\Windows\Fonts. We will consider this the "approved" list. This list does contain all fonts required for a windows xp install to function.

Now, I have been asked to delete all fonts in C:\Windows\Fonts that are not part of this list. Below you can see some of the code snippet (i've simplified it a bit):

Dim aFonts(3)
aFonts(0) = "arial.ttf"
aFonts(1) = "arialbd.ttf"
aFonts(2) = "arialbi.ttf"

x=0
For Each item In aFonts
If Not objFSO.FileExists("C:\Windows\Fonts\" & aFonts(x)) Then objFolder.CopyHere ("\\server\WinFonts\" & aFonts(x))
x=x+1
Next

The install of the fonts if they are not found works perfectly, however I am struggling with comparing the filenames in C:\Windows\Fonts on a computer to my aFonts() array.
 

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,284
3,905
75
So, first get a list of all files in c:\windows\fonts. Here's an example that does that. Presumably the output of folder.Files is an array, which is what you want.

Next, you need to compare to your approved list. When searching for a match in a set, I usually use a construct that in VBScript is known as a dictionary. Just set the values to 1, and if the lookup succeeds the file is OK; otherwise, delete it.
 

dfnkt

Senior member
May 3, 2006
435
0
76
I've gotten the snippet below to print out the lines from my file.

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
("c: \list.txt", ForReading)
Do Until objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
afonts = Split(strNextLine , ",")
Wscript.Echo afonts(0)
For i = 1 to Ubound(afonts)
Wscript.Echo afonts(i)
Next
Loop

Still aloof on how to get them into a readable array in my script such I could say afonts(1) = arial.ttf for example.
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
The Linq extensions are tailor-made for set processing tasks like this. Try the Enumerable.Except() method, which is inherited by List<>, Dictionary<>, etc. Except() produces a sequence which is the difference between two sequences. So if you stick the enumerated filenames from the directory into one list, and the filenames from your array into another, then call list1.Except(list2) the result will be a list of the names that aren't in both sets.
 

dfnkt

Senior member
May 3, 2006
435
0
76
The Linq extensions are tailor-made for set processing tasks like this. Try the Enumerable.Except() method, which is inherited by List<>, Dictionary<>, etc. Except() produces a sequence which is the difference between two sequences. So if you stick the enumerated filenames from the directory into one list, and the filenames from your array into another, then call list1.Except(list2) the result will be a list of the names that aren't in both sets.

That sounds awesome, I would then just need to delete the except list. I will take a look, thanks!
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |