Тема: JScript: чтение INI файлов
var INI = {}; // В этом объекте будут хранится все параметры ini файла
// Функция для загрузки всех параметров ini файла в наш объект
function ReadINIFile(ini_file) {
var FSO = new ActiveXObject("Scripting.FileSystemObject");
if ((FSO.FileExists(ini_file)) && (FSO.GetFile(ini_file).Size > 0)) {
with (FSO.OpenTextFile(ini_file)) {
var text = ReadAll();
Close();
var arr_lines = text.split('\n');
var section, param, value;
for (var i in arr_lines){
if (/^\[(\w+)\]/.test(arr_lines[i])){
section = RegExp.$1;
INI[section] = {};
}
if (/^([^;#][^=]*?)\s*=\s*([^\r\n]*?)\s*$/.test(arr_lines[i])){
param = RegExp.$1;
value = RegExp.$2;
INI[section][param] = value;
}
}
}
}
}
// ==================================================================
// ПРИМЕР ИСПОЛЬЗОВАНИЯ:
// Читаем ini файл
ReadINIFile('c:\\Total Commander\\wincmd.ini');
// Выводим значение одного из параметров
WScript.Echo(INI.Configuration.Editor);
// Выводим все параметры из секции [Lister]
for (var prop in INI.Lister){
WScript.Echo (prop + "=" + INI.Lister[prop]);
}
RegExp
Поскольку перечитывать каждый раз ini-файл заново - нерационально, процедура грузит за раз ВСЕ параметры в объект INI.
Если у нас есть сомнения в существовании того или иного параметра, то надо извлекать его либо перебором:
for (var prop in INI.Configuration) {
if (prop=="Editor") WScript.Echo (INI.Configuration[prop]);
}
либо просто проверять существование соответствующего объекта:
if (INI.Configuration.Editor) WScript.Echo(INI.Configuration.Editor);
Вывод имён всех секций INI файла:
// Выводит имена всех секций INI файла
for (var section in INI){
WScript.Echo (section);
}
Автор примеров — mozers.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.