Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Скрипт на JScript - помогите исправить ошибку


Автор: Гость_Сергей 1.6.2004, 14:06
Помогите исправить ошибку в скрипте написаном на JScript.
Так вот ошибка заключается в том, что в операционной системе Windows 98 при выполнении моего скрипта происходит ошибка: ПУТЬ НЕ НАЙДЕН
А вот в Windows XP никакой ошибки нет. Ошибка происходит из-за того, что в Win98 нет такой папки C:\windows\system32\drivers\etc\ (нет папки etc), а вот в XP она есть.

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

Вот код скрипта:
==================================================
wsh=new ActiveXObject("Wscript.Shell");
var windir=wsh.ExpandEnvironmentStrings("%WINDIR%");
var FSO = new ActiveXObject("Scripting.FileSystemObject");
if (FSO.FileExists(windir+"\\system32\\drivers\\etc\\protocol"));
{
var f = (FSO.OpenTextFile(windir+"\\system32\\drivers\\etc\\protocol", 8, true));
f.WriteLine ("здесь текст который надо добавить");
f.Close();
}
{
var s = (FSO.OpenTextFile(windir+"\\protocol", 8, true));
s.WriteLine ("здесь текст который надо добавить");
s.Close();
}
=========================================================
Этот скрипт должен находить файл protocol и дописывать в него данные.
Но проблема в том, что в Windows 98 этот файл (protocol) лежит в корневой папке Windows, а в XP он лежит в windows\system32\drivers\etc\
Но скрипт может запускаться и под win98 и под XP и под ME, и под 2000, поэтому ошибки недопустимы.

Я вот не могу придумать как сделать так, чтобы скрипт определил в какой папке находится файл protocol. Как видите по моему коду скрипт проверяет наличие файла protocol в папке windir+"\\system32\\drivers\\etc\\ но вот в Win 98 на этом этапе скрипт выдает ошибку, так как такой папки в Win 98 нет. Подскажите что можно придумать чтобы скрипт сам определил, в какой папке он должен изменить файл (protocol) в зависимости от ОС.
Может можно так-то избежать этой ошибки и заставить скрипт выполнится до конца????

Помогите исправить скрипт и заставьте его работать без ошибки ПУТЬ НЕ НАЙДЕН
Всем заранее спасибо за помощь.

Автор: GoodBoy 1.6.2004, 14:40
Если файл для конкретной ОС лежит в известной папке, то почему бы не опредилять версию ОС и в зависимости от нее читать из той или иной папки??

Автор: Гость_Сергей 1.6.2004, 19:51
хорошее предложение... только как бы его реализовать mad.gif

Автор: GoodBoy 2.6.2004, 10:43
Я к сожалению не работал с ActiveXObject, но уверен, что там есть какая-нить функция для опредиления версии системы!!!

Автор: Gold Dragon 2.6.2004, 12:15
А navigator.userAgent не поможет определить ОС? Только XP, кажется, определяется как NT 5.1

Автор: Sardar 5.6.2004, 14:15
Наконец появилось время, сори за паузу...
Так, про navigator, window и прочие обьекты клиентского JS забываем - тут вопрос не клиентского JS.
Сергей твой код не имеет смысла, ощущение что тебе срочно надо написать скрипт, но до этого ты никогда JS в глаза не видел. Читай это до конца: http://wdh.suncloud.ru/js01.htm#ref3
Вот этот код будет работать правильно на любой машине... Вместо копирования участков кода напиши одну функцию.
Код
wsh=new ActiveXObject("Wscript.Shell");
var windir=wsh.ExpandEnvironmentStrings("%SYSTEMROOT%");

var FSO = new ActiveXObject("Scripting.FileSystemObject");
if (FSO.FileExists(windir+"\\system32\\drivers\\etc\\protocol")) {
 var f = (FSO.OpenTextFile(windir+"\\system32\\drivers\\etc\\protocol", 8, true));
 f.WriteLine ("çäåñü òåêñò êîòîðûé íàäî äîáàâèòü");
 f.Close();
}
if(FSO.FileExists(windir+"\\protocol")){
 var s = (FSO.OpenTextFile(windir+"\\protocol", 8, true));
 s.WriteLine ("çäåñü òåêñò êîòîðûé íàäî äîáàâèòü");
 s.Close();
}

Автор: Guest 5.6.2004, 23:43
Спасибо всем за помощь я уже сделал так что работает без ошибки в любой операционной системе.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)