Принтер по умолчанию по маске имени
Есть прекрасный, простой и вполне рабочий скрипт для установки определенного принтера в качестве используемого по-умолчанию, вот он:
Код:
rundll32 printui.dll,PrintUIEntry /y /n "Printer_name"
Задача: Модифицировать скрипт таким образом, чтобы в параметре Printer_name можно было задвать имя принтера по маске.
Пример:
Имя принтера " HP1320_buh (Перенаправлено 1)"
Нужно сделать так, чтобы по-умолчанию ставился принтер, первая часть названия которого совпадает с HP_1320_buh , то есть что то вроде " HP_1320_buh****"
Код:
rundll32 printui.dll,PrintUIEntry /y /n "HP_1320_buh***"
- не работает
Спасибо
|
всегда отрадно видеть любителей костылей, изобретающих велосипеды с треугольными, поперечными колёсами.
|
Цитата:
Цитата cameron
всегда отрадно видеть любителей костылей, изобретающих велосипеды с треугольными, поперечными колёсами. »
|
Есть проблема с определенным оборудованием в определенной конфигурации, описана например здесь http://toster.ru/q/100419
Решения нет. Костыли рассматриваются пока как единственно возможное решение.
|
WSH:
читать дальше »
Код:
Option Explicit
Dim i
Dim objRegExp
Dim objWshNetwork
Dim collWshCollection
Set objRegExp = WScript.CreateObject("VBScript.RegExp")
With objRegExp
.IgnoreCase = True
.Pattern = "HP_1320_buh.*"
End With
With WScript.CreateObject("WScript.Network")
Set collWshCollection = .EnumPrinterConnections()
For i = 0 To collWshCollection.Count - 1 Step 2
If objRegExp.Test(collWshCollection.Item(i + 1)) Then
.SetDefaultPrinter collWshCollection.Item(i + 1)
Exit For
End If
Next
Set collWshCollection = Nothing
End With
Set objRegExp = Nothing
WScript.Quit 0
Умолчальным будет сделан первый же подходящий по шаблону принтер.
|
Спасибо , но скрипт не работает. Выполняется без ошибок, но поставленную задачу не решает, принтер по умолчанию не меняется :(
|
Цитата:
Цитата sigmatik
Спасибо , но скрипт не работает. Выполняется без ошибок, но поставленную задачу не решает, принтер по умолчанию не меняется »
|
Прошу прощения, в скрипте точку пропустил, все работает!. Спасибо.
P.S. а для соискателей могу предложить еще один вариант на powershell
Код:
$pr
$pr=get-WmiObject -class Win32_printer | where ({$_.name -like "reg1*"}) | foreach { $_.name }
rundll32 printui.dll,PrintUIEntry /y /n $pr
|
Цитата:
Цитата sigmatik
могу предложить еще один вариант на powershell »
|
Вам надо там ещё обрабатывать ситуацию, когда не будет найдено ни одного подходящего принтера. Также не проверял, как будет се6я вести Ваш скрипт с несколькими подходящими под шаблон именами принтеров.
|
а как таймер выполнения отсрочить секунд на 30, скрипт отлично работает но принтер иногда подтягивается не сразу
если добавляю
WScript.Sleep 30000
Ошибка: предполагается наличие инструкции
|
Таймер задается в миллисекундах.
А так всё должно работать, возможно в Вашем сценарии используются какие-нибудь вложенные конструкции?
|
копипаста из сообщения
только строка с паттерном выглядит так
.Pattern = "\d{3,4}.*"
т.к. название принтеров начинается с трех или четырех цифр в зависимости от модели локального принтера/мфу или номера отдела из четырех цифр в сетевом варианте и дальше различные символы буквы цифры скобки описание
и верхняя строчка скрипта
WScript.Sleep 30000
в итоге ошибка предполагается наличие инструкции
строка 3
символ 1
|
Время: 05:20.
© OSzone.net 2001-