Этот код должен считать все операторы #define в любом количестве входных файлов. В операторах предусмотрены пробелы, такие как «# define» или «# define», оба из которых являются допустимыми.
ПРИМЕЧАНИЕ: я не учитываю # в одной строке и "define" в следующей, я предполагаю, что # и "define", по крайней мере, находятся на одной строке, хотя вы могли бы сделать это, прочитав весь файл и удалив все пробелы, затем сохраните в переменную или временный файл или что-то в этом роде и используйте это в качестве ввода.
Вы можете сократить код кучей, отключив константы доступа к файлу, а что нет, иначе это даст вам вывод, подобный этому:
There are: 9 define statements in the source: c:\define.txt
There are: 11 define statements in the source: c:\define2.txt
There are: 10 define statements in the source: c:\define3.txt
Командная строка будет выглядеть следующим образом: cscript scriptname.vbs c: \ define.txt c: \ define3.txt etc ...
' Define constants for file access
Const TristateFalse = 0
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
If objArgs.Count > 0 then
For i = 0 To objArgs.Count - 1
Set objFileInputStream = objFSO.OpenTextFile(objArgs(i), ForReading, False, TristateFalse)
intTempCount = 0
tokenCount = 0
Do while not objFileInputStream.AtEndOfStream
strLine = replace(ucase(objFileInputStream.ReadLine), " ", "")
intLineLength = len(strLine)
Do
If instr(strLine, "#DEFINE") <> 0 then
tokenCount = tokenCount + 1
strLine = replace(strLine, "#DEFINE","", 1, 1)
intTempCount = intTempCount + 1
else
exit do
End If
Loop until intTempCount = intLineLength
Loop
objFileInputStream.Close
wscript.echo "There are: " & tokenCount & " define statements in the source: " & objArgs(i)
Next
Else
wscript.echo "You must enter at least one filename."
End If