1 (изменено: Real Root, 2010-11-12 16:59:57)

Тема: VBScript: Динамическое создание имен переменных или массивов

Здравствуйте товарищи.
Помогите решить следующую проблему:
На CMD можно динамически создавать нужные переменные, например так:
for /l %%A (1,1,10) do (
SET Comp-%%A = %%A
)
В данном случае будет 10 переменных Comp-1, Comp-2, ... , Comp-10
Помогите сделать то же самое на VBScript
Как сделать нечто похожее - ума не приложу.


Для чего это нужно:
Пишу программку инвентаризации компов по сети.
На каждом компе есть расшаренная папка reports$ с отчетом сгенерированным программой Aida64 (бывший Everest).
В этом отчете (report.ini) перечислены материнка, проц и т.д.
Я хочу сделать так:

MyArray = Array("CPU Type=", "Motherboard\|Motherboard Name=", ... )
ColComputers = Array("1", "2", "11") 'ip-адреса компов
For Each Computer in ColComputer
Set objFile = objFSO.OpenTextFile("\\192.168.1." & Computer & "\reports$\report.ini", ForReading)
...
...
...
i = 0
For Each element In MyArray
i = i + 1
Set regEx = New RegExp
...
...
...
Set myMatches = RegEx.Execute(objFile.ReadAll)
For Each myMatch In myMatches
[b]  Comp_(Computer)(i) = myMatch - ' Вот как тут динамически менять имя массива куда будут складываться значения myMatches. Нужно чтобы получалось нечто Comp_1(1) или Comp_11(1) и т.д.[/b]
  Next
Next
Next

2

Re: VBScript: Динамическое создание имен переменных или массивов

Нужно использовать тег code для оформления постов. Свой созданный пост можно отредактировать.

По теме: вместо создания имён переменных всегда можно использовать (вложенные) массивы разного рода, например, Dictionary.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

3

Re: VBScript: Динамическое создание имен переменных или массивов

МДА...
Все ЭЛЕМЕТАРНО...
Я так и не врубился как работать с Dictionary, точнее каким образом мне его сюда применять, но я совершенно забыл про то что VBS имеет возможность работать с многомерными массивами:
Теперь все просто:
Dim Database(100,10)
...
Database(Computer,i) = myMatch

4

Re: VBScript: Динамическое создание имен переменных или массивов

Dictionary - хороший инструмент для Вашего случая.
Его можно представить как двухстолбцовую таблицу (двумерный массив). Левый столбец - ключ (индекс), например, имя компьютера, которое уникально в этой сети, а правый - значение, связанное с этим ключём (именем), в том числе и длинное предложение, полученное сцеплением строк.
При этом не надо заботиться о том, что размерности обычного массива может и не хватить. Просто добавь в Dictionary ещё один ключ (имя компьютера) и информацию по нему.
Далее фантазируй ...  информацию можно записать в текстовый файл и при загрузке, например, другим скриптом, извлекать по имени компьютера или узнавать, есть ли в сети компьютер с заданным именем, или, создавать список имён компьютеров, которые конкретно надо отсканировать, или, помещая в первых символах дату сканирования, задавать сканирование только для устаревших данных, ...  :-).