1

Тема: JScript: Правильно организовать очередь для доступа к файлу.

Доброго дня.
Есть у меня программа, которой нужно часто вызывать скрипт для записи одного единственного аргумента в XML файле.

Запускается так:
writeStatus.js /file:bases.xml /cod:005511 /status:1

Вот как я попытался организовать:

objNamed = WScript.Arguments.Named;

if (objNamed.Exists("file")) {
	xml = new ActiveXObject("Msxml2.DOMDocument");
	xml.async = false;
	do {
		WScript.Sleep(1000);
		xml.load (objNamed.Item("file"));
	}
	while (xml.parseError.errorCode)
	
	if (item = xml.selectSingleNode("//item[@code='" + objNamed.Item("cod") + "']")) {
			if (objNamed.Exists("status")) {
				item.setAttribute("status", objNamed.Item("status"));
				xml.save(objNamed.Item("file"));
			}
		}
	xml.close;
};

Если часто вызывать скрипт, то может возникнуть ситуация, что файл еще открыт и вылетает ошибка, "нет доступа к файлу"

Что я делаю не так?

Нас невозможно сбить с пути, нам пофигу куда идти.

2

Re: JScript: Правильно организовать очередь для доступа к файлу.

Приветствую, может быть стоит один раз считать xml и работать с ним в памяти?

3 (изменено: mikser, 2011-04-09 14:51:28)

Re: JScript: Правильно организовать очередь для доступа к файлу.

DnsIs пишет:

Что я делаю не так?

load возвращает в случае успеха истину.
Попробуйте анализировать это значение в своем скрипте.

Если не поможет то старый добрый try catch никто не отменял, эти инструкции работают даже c ActiveX объектами.