Привет всем!!!
Народ, кто сталкивался с WSH - помогите..... Пытаюсь подключить сетевой диск, предварительно удалив старый, делаю: JScript: var Network = WScript.CreateObject("WScript.Network"); Network.RemoveNetworkDrive ("O:"); Network.MapNetworkDrive ("O:", "\\\\krrunion\\user"); При запуске выдает ошибку: "Локальное имя устройства уже используется для подключения к другому сетевому ресурсу" Получается, что Network.RemoveNetworkDrive ("O:") отрабатывает, а Network.MapNetworkDrive ("O:", "\\\\krrunion\\user") - нехочет, ругается......... В чем проблема, не пойму?! Помогите..... З.Ы. Да, кстати паузу между этими коммандами я пробовал ставить - тоже не помогает |
команды
net use o: /del net use o: \\krrunion\user выполняются успешно? Хорошо бы перехватывать ошибку в строке Network.RemoveNetworkDrive ("O:"); если О: не подключен. У меня этот скрипт выполняется без проблем. |
2DAnG
Да в том то и дело, что net use выполняется успешно, а вот Network.MapNetworkDrive ("O:", "\\\\krrunion\\user"); - нет. ?! До использования Network.RemoveNetworkDrive ("O:"); выполняется проверка подключен ли сетевой диск, аль нет, так что тут проблем никаких..... Такое ощущение что WSH просто не могёт подряд выполнять команды RemoveNetworkDrive и MapNetworkDrive ??? |
Сорри, поторопился с ответом.
Расследование показало, что нужно использовать Network.RemoveNetworkDrive ("O:",1,1); Цитата:
|
2DAnG
Во спасибо, выручил.......последние два параметра оказались как нельзя кстати :) Да, кстати, а ты пробовал подключать сетевые принтеры через метод AddWindowsPrinterConnection? Насколько я понял можно подключать только те принтеры, которые непосредственно подключены к машине на базе NT. А у меня в сети подавляющее большинство машин с 98-й виндой и этот метод не отрабатывает......при попытке подключения AddWindowsPrinterConnection("\\\\CompName\\EPSON") пишет: "The remote server machine does not exist or is unavailable", хотя эта машина есть и доступ к ней тоже есть и принтер расшаренный и все такое......... Может сталкивался?! |
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] |
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; * } |
To Mr Dan
Спасибо, все получилось с подключением-отключением. А эту функцию тоже можно в *.js файл запихать и в нем вызывать? функция не совсем понятна: что имеется в виду под Path, когда диск подключен? UNC имя что-ли? (в моем случае \\comp1\c$ ?) Если да, то оно прямо так в кавычках строкой и подставляется в вызов функции, как и "n:"? |
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") |
Mr Dan
Цитата:
P.S. я не спец по WSH, и не очень его люблю за громоздкость. perl, имхо, гораздо симпатичнее :) |
DAnG
Интересно, а в чем заключается громоздкость WSH ? Тем более ,он поддерживает Perl. Просто себе хост и все.....работает довольно быстро. |
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 |
Помогите написать скрипт для создания ярлыков в папке
%USERPROFILE%\Application Data\Microsoft\Internet Explorer\Quick Launch Заранее спасибо |
А где найти этот Windows Script Host, поиск ничо не нашёл...
|
jurapolet, Google в помощь...
|
Цитата:
Windows Script 5.6 for Windows XP and Windows 2000, куда это ставить, в систему или дистрибутив? В систему установил - тоже самое, ничё не изменилось. Специалисты!!! Покажите пальцем чо откуда взять и куда положить, тем более раз эта проблема не единичная. |
|
Цитата:
Запускаю меню Выполнить, ввожу msgbox.vbs, появляется это: Извиняюсь, неправильно сделал. Щас просто изменил расширение, запускаю двойным кликом появляется окно выбора программы для открытия, выбираю Microsoft (R) Windows Based Script Host, появляется такое окно: |
|
Внутри ни чо не писал, чистый файл, сообщает не обнаружено ядро, хотя программа в окне выбора есть Microsoft (R) Windows Based Script Host. Ошибку в предыдущем посте отредактировал
|
jurapolet, попробуйте его переустановить:
http://www.microsoft.com/downloads/d...DisplayLang=ru |
Цитата:
|
jurapolet, а зачем вы запускаете пустой vbs-файл? как я понял вы не писали в файле
Цитата:
|
Цитата:
Значит как я понял всё нормально? А пакет всё равно при интеграции выдаёт: Не удаётся найти файл Addons\ResPatch_BDB_v4.1\PackFiles Ошибка в синтаксисе комманды. Значит причина не в этом. Собираю на диске D:\WIN XP SP3, пробелы могут влиять на комманду? Все остальные аддоны ставятся нормально, щас убрал из папки аддоны ResPatch_BDB_v4.1 и MegaLF25, без них всё собралось прекрасно без ошибок. |
Цитата:
выдаёт ошибку, я прошу помощи в поиске этой ошибки |
Время: 12:26. |
Время: 12:26.
© OSzone.net 2001-