1

Тема: WSH: Скрипт создания ярлыка "Отправить"

Привет скриптописцы. Мне нужен скрипт (наверное WSH) который я бы поместил в автозагрузку. По работе создаю графические файлы и отправляю на печать по сети в папку печатника. Скрипт должен каждый день создавать ярлык в системной папке "Send to". Ярлык на ту самую сетевую папку, вот только у нас она для каждого дня своя. Т.е. пришел я на работу 10 октября и отправляю все файлы в папку \\Print\october\10, ну а 11 октября соответствено в \\Print\october\11. Эти папки каждый день создает печатник у себя на машине, а я бы хотел что б у меня всегда была возможность отправлять файл через контекстное меню в нужную папку. Помогите пожалуйста со скриптом.

2

Re: WSH: Скрипт создания ярлыка "Отправить"

0meg@, пробуйте:

Option Explicit

Dim objFSO
Dim objWshShell

Dim strPath2Lnk
Dim strTargetPath
Dim prevLocale


Set objFSO      = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")

strPath2Lnk = objFSO.BuildPath(objWshShell.SpecialFolders("SendTo"), "Send to NetPrinterFolder.lnk")

prevLocale = SetLocale("en-us")
strTargetPath = objFSO.BuildPath( _
    objFSO.BuildPath( _
        "\\Print", MonthName(Month(Now()))), _
    Right("00" & CStr(Day(Now())), 2) _
)
SetLocale(prevLocale)

If objFSO.FolderExists(strTargetPath) Then
    With objWshShell.CreateShortcut(strPath2Lnk)
        .TargetPath = strTargetPath
        .WindowStyle = 1
        .IconLocation = "%SystemRoot%\system32\SHELL32.dll, 60"
        .Description = "Send selected file(s) to network folder for print"
        .WorkingDirectory = objWshShell.SpecialFolders("Desktop")
        
        .Save
    End With
Else
    WScript.Echo "Error: net printer folder [" & strTargetPath & "] is not exists."
    WScript.Quit 1
End If

Set objWshShell = Nothing
Set objFSO      = Nothing

WScript.Quit 0

Поскольку Вы не указали ни версию ОС, ни её язык, ни как будет называться папка с 1 по 9 число — я сделал по своему усмотрению.

3

Re: WSH: Скрипт создания ярлыка "Отправить"

Большое спасибо alexii. Язык русский, Win XP, а полный путь должен быть такой для первого числа:

\\Print\Work\October\01

Вопрос, если папка месяца названа не October, а например 03_October то подправить код нужно так?:

prevLocale = SetLocale("en-us")
strTargetPath = objFSO.BuildPath( _
    objFSO.BuildPath( _
        "\\Print\03_October\", _
    Right("00" & CStr(Day(Now())), 2) _
)

0meg@, используйте тэг «code» для оформления кода на форуме.

4

Re: WSH: Скрипт создания ярлыка "Отправить"

0meg@ пишет:

Вопрос, если папка месяца названа не October, а например 03_October то подправить код нужно так?:

Нет, вот так:

prevLocale = SetLocale("en-us")
strTargetPath = objFSO.BuildPath( _
    "\\Print", _
    Right("00" & CStr(Day(Now())), 2) & "_" & MonthName(Month(Now())) _
    )
SetLocale(prevLocale)

5

Re: WSH: Скрипт создания ярлыка "Отправить"

Уважаемый alexii, скрипт не запускаеться. Пишет что не указан сценарий.

6

Re: WSH: Скрипт создания ярлыка "Отправить"

0meg@, Правила форума, п.4.12:

4.12. Если Вы хотите продемонстрировать какое-либо сообщение об ошибке в виде окна с кнопкой "OK", часто бывает удобно проделать следующее. Если сделать это окно активным, а затем нажать комбинацию клавиш "Ctrl+C", содержимое этого окна будет помещено в буфер обмена в виде текста (этот трюк срабатывает с очень многими окнами сообщений). Полученный текст Вы можете разместить на форуме в своём сообщении (убрав из него всё лишнее и оставив только существенное) с помощью ВВ-тега "code" или "quote".

То бишь, чтобы сказать что-то существенное, я, как минимум, должен видеть текст Вашего сценария и полное сообщение об ошибке, наподобие:

Уважаемый bla-bla-bla, скрипт:

Option Explicit

Dim x, y, z

x = 1
y = 0

z = x / y

WScript.Echo z

WScript.Quit 0

не запускается.

Сообщение об ошибке:

---------------------------
Сервер сценариев Windows
---------------------------
Сценарий: c:\Temp\Sample.vbs
Строка: 8
Символ: 1
Ошибка: Деление на 0
Код: 800A000B
Источник: Ошибка выполнения Microsoft VBScript

---------------------------
ОК   
---------------------------

7

Re: WSH: Скрипт создания ярлыка "Отправить"

Извиняюсь за долгое отсутствие. Нужно подравить скрипт таким образом что бы каждый день создавался ярлык на папку \\Print\Work\10_October\01

Две последние папки меняються, т.е. для 12 ноября скрипт должен создать ярлык:

\\Print\Work\11_November\12

Поясните пожалуйста как это сделать, пыталься подправить сам, но пока не получаеться...

8

Re: WSH: Скрипт создания ярлыка "Отправить"

Как именно у Вас не получается? Т.е., какой код у Вас вышел в итоге?

9

Re: WSH: Скрипт создания ярлыка "Отправить"

В данный момент осваиваю VBА для Corel Draw и подправил код вот так, но он не работает дает ошибку в исполнении скрипта (щас не могу привести текст ошибки):


prevLocale = SetLocale("en-us")
strTargetPath = objFSO.BuildPath( _
    "\\Print\Work", Month(Month(Now())) & "_" & MonthName(Month(Now()) "\" & "00" & CStr(Day(Now()))
      )
SetLocale(prevLocale)

10

Re: WSH: Скрипт создания ярлыка "Отправить"

Примерно так:

Option Explicit

Dim objFSO
Dim objWshShell

Dim strPath2Lnk
Dim strTargetPath
Dim prevLocale
Dim dtNow


Set objFSO      = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")

strPath2Lnk = objFSO.BuildPath(objWshShell.SpecialFolders("SendTo"), "Send to NetPrinterFolder.lnk")

prevLocale = SetLocale("en-us")
dtNow = Now()
strTargetPath = objFSO.BuildPath( _
    "\\Print\Work", Right("00" & CStr(Month(dtNow)), 2) & "_" & MonthName(Month(dtNow)) & "\" & Right("00" & CStr(Day(dtNow)), 2) _
      )
SetLocale(prevLocale)

WScript.Echo strTargetPath

If objFSO.FolderExists(strTargetPath) Then
    With objWshShell.CreateShortcut(strPath2Lnk)
        .TargetPath = strTargetPath
        .WindowStyle = 1
        .IconLocation = "%SystemRoot%\system32\SHELL32.dll, 60"
        .Description = "Send selected file(s) to network folder for print"
        .WorkingDirectory = objWshShell.SpecialFolders("Desktop")
        
        .Save
    End With
Else
    WScript.Echo "Error: net printer folder [" & strTargetPath & "] is not exists."
    WScript.Quit 1
End If

Set objWshShell = Nothing
Set objFSO      = Nothing

WScript.Quit 0

Номер месяца в:

\\Print\Work\11_November\12

тоже будет дополняться спереди нулём на однозначных месяцах — с января по сентябрь.

11

Re: WSH: Скрипт создания ярлыка "Отправить"

Скрипт преркасно работает, огромное спасибо. Вот только при попытке поставить его в назначенные задачи на определенное время он не запускаеться. С чем это связано? Или можно ли добавить строчку запуска скрипта в 9:30 утра.

12

Re: WSH: Скрипт создания ярлыка "Отправить"

0meg@ пишет:

…при попытке поставить его в назначенные задачи на определенное время он не запускаеться. С чем это связано?

Опишите подробно все действия, которые Вы проделывали и как определяли, что скрипт не запускается.

13

Re: WSH: Скрипт создания ярлыка "Отправить"

Через меню Пуск-Программы-Стандартные-Служебные я поставил скрипт в назначенные задачи, с настройками: ежедневно, время запуска 9:30. Но ярлык в указаное время не создаеться, как не создаеться и в следующие дни.

14

Re: WSH: Скрипт создания ярлыка "Отправить"

Меня интересует, что именно написано в свойствах задания на первой вкладке «Задание» в поле «Выполнить», в поле «Рабочая папка».

15

Re: WSH: Скрипт создания ярлыка "Отправить"

Вот скриншот http://www.pictureshack.ru/images/4835Auto.jpg

16

Re: WSH: Скрипт создания ярлыка "Отправить"

0meg@, повторю ещё раз: что именно написано в свойствах задания на первой вкладке «Задание»:
* в поле «Выполнить»;
* в поле «Рабочая папка».

17

Re: WSH: Скрипт создания ярлыка "Отправить"

Извеняюсь, там указан рабочий стол пользователья (единственного и с привелегиями администратора).

18

Re: WSH: Скрипт создания ярлыка "Отправить"

Гмм… Коллега, как бы это выразиться… Я ожидаю увидеть от Вас примерно такое:

* в поле «Выполнить» находится текст:

c:\windows\wscript.exe "c:\Мои проекты\ChangeShortcut.vbs"

* в поле «Рабочая папка» находится текст:

c:\Мои проекты

Вот что именно меня интересует.

19

Re: WSH: Скрипт создания ярлыка "Отправить"

http://www.pictureshack.ru/images/5662error.JPG

Вас это интересует, если я правильно понял.

20

Re: WSH: Скрипт создания ярлыка "Отправить"

Да, меня интересуют именно эти данные. Содержимое поля «Рабочая папка» видно из рисунка, а вот содержимое поля «Выполнить» скопируйте и приведите здесь.

21

Re: WSH: Скрипт создания ярлыка "Отправить"

Там то же самый путь C:\Documents and Settings\Oleg\Рабочий стол\

22

Re: WSH: Скрипт создания ярлыка "Отправить"

Там не то же, на приведённом Вами скриншоте окна виден конец текста:

…nts and Settings\Oleg\Рабочий стол\SendToCreation.vbs

Меня интересует полное содержимое этого поля.

OFF: Ощущение такое, что я не умею объяснить, чего я хочу добиться от Вас.

23

Re: WSH: Скрипт создания ярлыка "Отправить"

0meg@,

операционка какая - Windows XP SP2 (SP3) ?

Если ДА - сделайте новое задание в Планировщике, с немедленным запуском чего-нибудь очевидного (Блокнота, например).
Запуск происходит?

24

Re: WSH: Скрипт создания ярлыка "Отправить"

Операционная система XP SP2, новое задание сделал тоже не запустилось, журнал событий планировщика ни просмотреть, ни удалить не могу. Правда поставив галочку: Выполнять только при выполненом входе в систему, скрипт стал запускать...?

25

Re: WSH: Скрипт создания ярлыка "Отправить"

0meg@ пишет:

Операционная система XP SP2, новое задание сделал тоже не запустилось, журнал событий планировщика ни просмотреть, ни удалить не могу. Правда поставив галочку: Выполнять только при выполненом входе в систему, скрипт стал запускать...?

0meg@,

попробуйте погуглить ошибку планировщика заданий 0x80070005.
Может что-то поможет...
Мне ничего не помогло.

Начиная с SP2 MS решила, что вирусы могут ставиться в планировщик и работать оттуда.
Пропатчили так, что он совсем перестал работать.
Не работает по-разному - в зависимости от совокупности условий.
Может не разрешать создавать новые задания, может не запускать вновь созданные и т.д. и т.п.

Да, и НЕ ВЕРЬТЕ, что в SP3 эта ошибка исправлена.
Нифига не исправлена.
Хотя можете попробовать - предварительно создав образ диска.