Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   Windows Scripting Host trouble... (http://forum.oszone.net/showthread.php?t=4132)

Mr Dan 05-11-2003 09:35 21743

Привет всем!!!

Народ, кто сталкивался с WSH - помогите.....

Пытаюсь подключить сетевой диск, предварительно удалив старый, делаю:

JScript:
var Network = WScript.CreateObject("WScript.Network");
Network.RemoveNetworkDrive ("O:");
Network.MapNetworkDrive ("O:", "\\\\krrunion\\user");

При запуске выдает ошибку:
"Локальное имя устройства уже используется для подключения к другому сетевому ресурсу"

Получается, что Network.RemoveNetworkDrive ("O:") отрабатывает, а Network.MapNetworkDrive ("O:", "\\\\krrunion\\user") - нехочет, ругается.........

В чем проблема, не пойму?! Помогите.....

З.Ы. Да, кстати паузу между этими коммандами я пробовал ставить - тоже не помогает

DAnG 05-11-2003 13:48 21744

команды
net use o: /del
net use o: \\krrunion\user
выполняются успешно?

Хорошо бы перехватывать ошибку в строке Network.RemoveNetworkDrive ("O:"); если О: не подключен.

У меня этот скрипт выполняется без проблем.

Mr Dan 05-11-2003 14:35 21745

2DAnG

Да в том то и дело, что net use выполняется успешно, а вот Network.MapNetworkDrive ("O:", "\\\\krrunion\\user"); - нет. ?!

До использования  Network.RemoveNetworkDrive ("O:"); выполняется проверка подключен ли сетевой диск, аль нет, так что тут проблем никаких.....

Такое ощущение что WSH просто не могёт подряд выполнять команды RemoveNetworkDrive и MapNetworkDrive

???

DAnG 05-11-2003 21:22 21746

Сорри, поторопился с ответом.

Расследование показало, что нужно использовать
Network.RemoveNetworkDrive ("O:",1,1);

Цитата:

object.RemoveNetworkDrive(strName, [bForce], [bUpdateProfile])

Mr Dan 06-11-2003 10:03 21747

2DAnG

Во спасибо, выручил.......последние два параметра оказались как нельзя кстати :)

Да, кстати, а ты пробовал подключать сетевые принтеры через метод AddWindowsPrinterConnection?
Насколько я понял можно подключать только те принтеры, которые непосредственно подключены к машине на базе NT.
А у меня в сети подавляющее большинство машин с 98-й виндой и этот метод не отрабатывает......при попытке подключения AddWindowsPrinterConnection("\\\\CompName\\EPSON") пишет:
"The remote server machine does not exist or is unavailable", хотя эта машина есть и доступ к ней тоже есть и принтер расшаренный и все такое.........

Может сталкивался?!



SergOst 06-11-2003 13:56 21748

To Mr Dan:

Объяните чайнику: Прочитал ваши письма, вдохновился,
скопировал следующие строки в файл FFF.js

var Network = WScript.CreateObject("WScript.Network");
Network.RemoveNetworkDrive ("n:",1,1);
Network.MapNetworkDrive ("n:", "\\\\comp1\\c$");

щелкнул дважды по этому файлу и получил ошибку во второй строке (символ 1), недоступный сетевой диск

Что я сделал не так? Команда net use n: \\comp1\c$ исправно срабатывает и подключает сетевой диск N.
Естественно, когда запускаю *.js n-диска нет.
Вообще зачем вторая строка? Пробовал ее переставить третьей - не помогло.
Функцию Block Scripting в Norton АV отключил, может ее надо отключать и на компе, куда подключаешься?


[s]Исправлено: SergOst, 14:58 6-11-2003[/s]

Mr Dan 06-11-2003 14:40 21749

2SergOst


Если тебе просто нужно подключить диск, делаешь Network.MapNetworkDrive ("n:", "\\\\comp1\\c$"), без Network.RemoveNetworkDrive ("n:",1,1).
В твоём же случае получается, что сначала выполняется команда *Network.RemoveNetworkDrive ("n:",1,1), которая пытается отключить диск n: , но поскольку диска n: у тебя нету, она тебе и ругается, грит мол недоступный сетевой диск.

Делай так:

var Network = WScript.CreateObject("WScript.Network");
Network.MapNetworkDrive ("n:", "\\\\comp1\\c$");

и все должно быть ОК.

З.Ы. А вобще при желании можешь написать ф-ю которая бы сначала проверяла подключен ли уже сетевой диск или нет, а потом в зависимости от результата действуешь....:)

Например моя ф-я выглядит  так:

function CheckNetworkMapping(DriveLetter,Path)
*// Возвращаемые значения:
* * // 0 - диск не найден
* * // 1 - диск найден, но несоответствует Path
* * // 2 - диск найден и соответствует Path
* *var Bool;
* *var Result;
* * Bool = false;
* *var Drives = Network.EnumNetworkDrives();
* *for(var i = 0; i < Drives.length; i += 2)
* *{
* * *if(Drives.Item(i).toLowerCase() == DriveLetter.toLowerCase())
* * * { Bool = true; if(Drives.Item(i+1).toLowerCase()==Path.toLowerCase()) Result = 2; else Result = 1;
* * * * break;
* * * }
* *}
* *if(Bool)
* * return Result
* *else
* * return Result = 0; *
}


SergOst 06-11-2003 18:09 21750

To Mr Dan

Спасибо, все получилось с подключением-отключением.

А эту функцию тоже можно в *.js файл запихать и в нем вызывать?

функция не совсем понятна: что имеется в виду под Path, когда диск подключен? UNC имя что-ли? (в моем случае \\comp1\c$ ?)

Если да, то оно прямо так в кавычках строкой и подставляется в вызов функции, как и "n:"?


Mr Dan 06-11-2003 18:49 21751

2SergOst

>> А эту функцию тоже можно в *.js файл запихать и в нем вызывать?

Using Windows Script Files (.wsf)
A Windows script (*.wsf) file is a text document containing Extensible Markup Language (XML) code. It incorporates several features that offer you increased scripting flexibility. Because Windows script files are not engine-specific, they can contain script from any Windows Script compatible scripting engine. They act as a container.

With .wsf files, you can take advantage of the following features as you create your scripts:

.wsf files support
Include statements, Multiple engines,Type libraries, Tools,Multiple jobs in one file.

Include Statements
If you have .js and .vbs files from previous Windows Script Host projects, a .wsf file enables you to use them with Windows Script Host. A .wsf file encapsulates a library of functions that can in turn be used by multiple .wsf files.

The following example shows a .wsf file that includes a JScript file (fso.js), plus a VBScript function that calls a function (GetFreeSpace) in the included file. The contents of fso.js are also shown.

<job id="IncludeExample">
  <script language="JScript" src="FSO.JS"/>
  <script language="VBScript">
     ' Get the free space for drive C.
     s = GetFreeSpace("c:")
     WScript.Echo s
  <sScript>
</job>
The fso.js file contains the following:

function GetFreeSpace(drvPath) {
  var fs, d, s;
  fs = new ActiveXObject("Scripting.FileSystemObject");
  d = fs.GetDrive(fs.GetDriveName(drvPath));
  s = "Drive " + drvPath + " - " ;
  s += d.VolumeName;
  s += " Free Space: " + d.FreeSpace/1024 + " Kbytes";
  return s;
}


>>функция не совсем понятна: что имеется в виду под Path, когда диск подключен? UNC имя что-ли? (в моем случае \\comp1\c$ ?)

>>Если да, то оно прямо так в кавычках строкой и подставляется в вызов функции, как и "n:"?

Под Path имеется в виду UNC имя, записывается в кавычках, например  CheckNetworkMapping("n:","\\\\disk\\dir")


DAnG 06-11-2003 19:01 21752

Mr Dan
Цитата:

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

P.S. я не спец по WSH, и не очень его люблю за громоздкость. perl, имхо,  гораздо симпатичнее :)

Mr Dan 07-11-2003 09:25 21753

DAnG

Интересно, а в чем заключается громоздкость WSH ? Тем более ,он поддерживает Perl. Просто себе хост и все.....работает довольно быстро.

Guest 19-11-2003 12:41 21754

Option Explicit
Dim Network
Const PrinterShare = "\\server\printer"

Set Network = CreateObject("Wscript.Network")
'Network.AddWindowsPrinterConnection PrinterShare
Network.SetDefaultPrinter PrinterShare
строчка типа

Network.AddWindowsPrinterConnection PrinterShare
отрабатывается только на принтерах при сервере 2000
а если 98 или jet стоит то не будет работать

а для мапирования дисков мне и полегче хватает
sub groupsmap(objDiskName,objDiskMap)
   On Error Resume Next  
Add2Log Now & ":Подключение диска -" & objDiskName  & " от - " & objDiskMap
       objNetwork.RemoveNetworkDrive objDiskName, True, True
       objNetwork.MapNetworkDrive objDiskName, objDiskMap
   Err.clear
end sub

Sub Add2Log (txt)
    Const Myfile = "C:\MyLog.txt"
    Const ForAppending = 8
Dim fso, file
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.OpenTextFile(MyFile, ForAppending, TRUE)
    file.WriteLine (txt)
    Set file = Nothing
End Sub


kovdaev 21-12-2005 20:13 385576

Помогите написать скрипт для создания ярлыков в папке
%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch
Заранее спасибо

jurapolet 20-03-2009 10:24 1069124

А где найти этот Windows Script Host, поиск ничо не нашёл...

2poisonS 20-03-2009 11:49 1069199

jurapolet, Google в помощь...

jurapolet 20-03-2009 12:36 1069232

Цитата:

Цитата 2poisonS
jurapolet, Google в помощь... »

Это я уже находил, везде книги и описание, реально из файлов нашёл только
Windows Script 5.6 for Windows XP and Windows 2000, куда это ставить, в систему или дистрибутив? В систему установил - тоже самое, ничё не изменилось. Специалисты!!! Покажите пальцем чо откуда взять и куда положить, тем более раз эта проблема не единичная.

Enforcer2K 20-03-2009 13:25 1069270

Цитата:

Цитата jurapolet
А где найти этот Windows Script Host »

В системе он уже есть. Создайте текстовой файл:
Цитата:

msgbox("AAA")
измените расширение на .vbs, а потом выполните. Работает?
Цитата:

Цитата Wowa_z
А можно ли сделать что-то на подобие этого »

Конечно! Сделать можно все.

jurapolet 20-03-2009 14:05 1069298

Цитата:

Цитата Enforcer2K
В системе он уже есть. Создайте текстовой файл: »

Создал текстовый файл msgbox, сохранил как msgbox.vbs, запускаю двойным кликом открывается как пустой текстовый файл
Запускаю меню Выполнить, ввожу msgbox.vbs, появляется это:


Извиняюсь, неправильно сделал.
Щас просто изменил расширение, запускаю двойным кликом появляется окно выбора программы для открытия, выбираю Microsoft (R) Windows Based Script Host, появляется такое окно:


Habetdin 20-03-2009 14:10 1069300

Цитата:

Цитата jurapolet
Создал текстовый файл msgbox, сохранил как msgbox.vbs »

а внутри написали что-нибудь?
Цитата:

Цитата jurapolet
Запускаю меню Выполнить, ввожу msgbox.vbs »

вводите полный путь, например "C:\Test\Script.vbs"

jurapolet 20-03-2009 14:15 1069307

Внутри ни чо не писал, чистый файл, сообщает не обнаружено ядро, хотя программа в окне выбора есть Microsoft (R) Windows Based Script Host. Ошибку в предыдущем посте отредактировал

Enforcer2K 20-03-2009 14:54 1069341

jurapolet, попробуйте его переустановить:
http://www.microsoft.com/downloads/d...DisplayLang=ru

jurapolet 20-03-2009 15:16 1069369

Цитата:

Цитата Enforcer2K
jurapolet, попробуйте его переустановить:
http://www.microsoft.com/downloads/d...DisplayLang=ru »

Переустановил, теперь при попытке запуска msgbox.vbs выкидывает такую ошибку:


Habetdin 20-03-2009 17:37 1069499

jurapolet, а зачем вы запускаете пустой vbs-файл? как я понял вы не писали в файле
Цитата:

Цитата Enforcer2K
msgbox("AAA") »

?

jurapolet 20-03-2009 18:07 1069520

Цитата:

Цитата Habetdin
jurapolet, а зачем вы запускаете пустой vbs-файл? как я понял вы не писали в файле »

Написал в нём msgbox("AAA"), файл запустился, появилось окошко и в нём ААА и кнопочка ОК.
Значит как я понял всё нормально?
А пакет всё равно при интеграции выдаёт:
Не удаётся найти файл Addons\ResPatch_BDB_v4.1\PackFiles
Ошибка в синтаксисе комманды.

Значит причина не в этом. Собираю на диске D:\WIN XP SP3, пробелы могут влиять на комманду? Все остальные аддоны ставятся нормально, щас убрал из папки
аддоны ResPatch_BDB_v4.1 и MegaLF25, без них всё собралось прекрасно без ошибок.

jurapolet 20-03-2009 18:41 1069572

Цитата:

Цитата gora
jurapolet, Enforcer2K, Habetdin, а какое отношение Windows Script Host или его отсутствие имеет к теме обсуждаемой в ветке. Для этого есть другие ветки! Давайте уже прекратим оффтоп! »

Вопрос стоит в том что не получается интегрировать Аддон ResPatch Black-Dark Aero Blue v4.1,
выдаёт ошибку, я прошу помощи в поиске этой ошибки


Время: 12:26.

Время: 12:26.
© OSzone.net 2001-