Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 52
VBS

Печать с параметрами и перемещение

26.10.2017, 13:16. Показов 2060. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Суть задачи: следить за определённой папкой, найдя файл *.jpg отправить его на печать с именем файла (чтобы имя файла было напечатано тоже) после переместить файл в другую папку.

Я не знаю как (и можно ли вообще) пустить картинку на печать и добавить к ней имя файла, с остальным я справлюсь

Есть идеи ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.10.2017, 13:16
Ответы с готовыми решениями:

Печать фотографий и Word-документов в большом количестве с параметрами
Добрый день. На работе появилась такая проблема. Я ищу программу (готовую или сырую для доработки), которая позволила бы печатать...

Розница 2.2. Печать чека и перемещение товаров между магазинами(складами)
Всем здравствуйте. не давно начал работать с 1с и имеется очень важный вопрос. 1с 8.3, Редакция Розница 2.2 ЧПМ Mercury G58 Как...

Вывод страницы на печать с заданными параметрами страницы
Подскажите, каким образом можно произвести вывод страницы на печать с заданными параметрами страницы. И если можно, вывод на экран сразу в...

37
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
26.10.2017, 14:28
Подобная задача обсуждалась вот в этой теме: VBS Печать JPEG-изображений - VBScript/JScript.
Цитата Сообщение от Gomorra Посмотреть сообщение
... чтобы имя файла было напечатано тоже...
Вероятнее всего, эту часть задачи проще всего решать, организуя печать через какое-либо приложение MSOffice.
0
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 52
26.10.2017, 15:07  [ТС]
Я примерно понимаю ... Создать файл закинуть в него картинку, как-то на этой же странице вставить имя файла и отправить на печать... всё бы хорошо да только Офиса на рабочих машинках нет
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
26.10.2017, 16:00
Цитата Сообщение от Gomorra Посмотреть сообщение
... Офиса на рабочих машинках нет
Тогда задачу вставки имени файла (а заодно, видимо, и печати картинки) надо решать с помощью какого-либо приложения для обработки графики, способного выполнять задачу, полученную из командной строки.
0
6986 / 2876 / 1106
Регистрация: 06.06.2017
Сообщений: 9,767
27.10.2017, 00:59
Ну, для печати картинок офис точно не нужен. Можно подумать над созданием временных прозрачных png c именами файлов и их штамповкой на сконвертированные в png основное изображение.

То же можно проделать c NConvert или ImageMagic.
Также есть вариант с IrfanView /advancedbatch.

Либо использовать что-то вроде этого, где в комстроке можно задавать всякие параметры для водяных знаков.
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
27.10.2017, 05:37
Цитата Сообщение от FlasherX Посмотреть сообщение
... для печати картинок офис точно не нужен...
Для печати картинок - не нужен, а для совмещения на одном печатном листе картинки и имени файла - очень даже удобен, хотя, разумеется, можно воспользоваться и каким-нибудь другим приложением.
0
6986 / 2876 / 1106
Регистрация: 06.06.2017
Сообщений: 9,767
27.10.2017, 07:55
Да удобства, собственно говоря, я не касался. И первое предложение не касается приложений.
0
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 52
27.10.2017, 10:06  [ТС]
Я по коду не очень, но возможна ли в теории такая идея ...

1- Создать файл в OpenOffice
2- Закинуть в него *.jpg (картинку)
3- на этой же странице, допечатать название картинки
4- вывести на печать
5- удалить файл

Примеров даже в создании файла в опен не так много в интернете, не говоря уже о том как забросить картинку с текстом на 1 страницу ...
0
6986 / 2876 / 1106
Регистрация: 06.06.2017
Сообщений: 9,767
27.10.2017, 14:09
Gomorra, ссылки по теме: 1, 2, 3.
Всё вполне наглядно. Т. е. можно вытащить нужное и собрать инструментик.
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
28.10.2017, 21:55
Gomorra, в качестве частного способа решения вашей задачи могу предложить вариант с созданием временного HTML-файла, содержащего ссылку на картинку и имя соответствующего файла.
Способ не безусловный, т.к. работает не всегда.
Попробуйте. Если в ваших условиях окажется работоспособным, то можно будет подумать о его "шлифовке".
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
strFile = "D:\Temp\1.jpg"
Set objFS = CreateObject("Scripting.FileSystemObject")
strPath = objFS.GetParentFolderName(strFile)
strName = objFS.GetBaseName(strFile)
strTemp = objFS.BuildPath(strPath, strName & ".html")
Set objFile = objFS.CreateTextFile(strTemp, True)
strTemp = objFS.GetFileName(strFile)
objFile.Write "<html><head></head><body><img src=" & strTemp & "><h3>" & strTemp & "</h3></body></html>"
objFile.Close
Set objShell = CreateObject("Shell.Application")
Set objFolderItem = objShell.NameSpace(strPath).Items.Item(strName & ".html")
For i = 0 To objFolderItem.Verbs.Count - 1
    strTemp = Replace(LCase(objFolderItem.Verbs.Item(i).Name), "&", "")
    If strTemp = "печать" Or strTemp = "print" Then
        objFolderItem.Verbs.Item(i).DoIt
        Exit For
    End If
Next
WScript.Quit 0
Цитата Сообщение от FlasherX Посмотреть сообщение
... первое предложение не касается приложений.
И можете продемонстрировать способ решения обсуждаемой задачи с помощью этого метода?
1
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 52
30.10.2017, 17:13  [ТС]
Следит за диском V, файлы с именем 'имя1' закидывает на диск J и т.д.
Переместив заданные файлы, создаёт журнал о перемещениях: время / от куда / куда

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Dim objFS, objFile, objShell, objWShell, strPath, arrPatterns, arrTargets, strLog, arrFile
Dim strExclusion, strTranslator, strTemp, blnIsConsole, blnHasError, xAnswer, i
 
strPath = "V:": strLog = "Журнал"
arrPatterns = Array("Имя1*.xls", "Имя2*.jpg", "Имя3*.jpg")
arrTargets = Array("J:", "D:", "K:")
Set objFS = CreateObject ("Scripting.FileSystemObject")
strTranslator = objFS.GetBaseName(WScript.FullName)
If StrComp(strTranslator, "cscript", vbTextCompare) = 0 Then
    blnIsConsole = True
Else
    blnIsConsole = False
 
End If
If objFS.FolderExists(strPath) Then
    For i = 0 To UBound(arrTargets)
        If objFS.FolderExists(arrTargets(i)) Then
            strExclusion = strExclusion & arrTargets(i) & ";"
        Else
            MsgBox "Не найдена папка" & arrTargets(i), vbCritical, "Перемещение файлов"
            blnHasError = True
            Exit For
        End If
    Next
    If Not blnHasError Then
        Set objShell = CreateObject("Shell.Application")
        strTemp = CStr(Year(Date)) & Right("00" & CStr(Month(Date)), 2) & Right("00" & CStr(Day(Date)), 2)
        strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog & "_" & strTemp & ".txt")
        Set objFile = objFS.OpenTextFile(strLog, 8, True)
        Call View_Folder(strPath)
        objFile.Close
        Set objFile = Nothing: Set objShell = Nothing
        WScript.Echo "Готово. Журнал - здесь: " & strLog
    End If
Else
    MsgBox "Не найдена папка" & strPath, vbCritical, "Перемещение файлов"
End If
Set objFS = Nothing
WScript.Quit 0
 
'======
 
Function View_Folder(strDir)
Dim objFolderItems, objItem, i
If InStr(1, strExclusion, strDir & ";", vbTextCompare) = 0 Then
    If blnIsConsole Then WScript.Echo "=== " & UCase(strDir) & " ==="
    On Error Resume Next
    For i = 0 To UBound(arrPatterns)
        Set objFolderItems = objShell.NameSpace(strDir).Items
        objFolderItems.Filter 64, arrPatterns(i)
        If objFolderItems.Count > 0 Then
            For Each objItem In objFolderItems
                objFS.MoveFile objItem.Path, arrTargets(i) & ""
                If Err.Number = 0 Then
 
Set objFS = CreateObject("Scripting.FileSystemObject")
 
                    If blnIsConsole Then WScript.Echo  time & chr(9) & " " & " [ " & objItem.Path & " ] " & " --> Перемещён в --> " & " [ " & arrTargets(i) & " ] " & chr(9) & " OK "
                    objFile.WriteLine time & chr(9) & " " & " [ " & objItem.Path & " ] " & " --> Перемещён в --> " & " [ " & arrTargets(i) & " ] " & chr(9) & " OK "
                Else
                    If blnIsConsole Then WScript.Echo time & chr(9) & " " & objItem.Path & " ---> Ошибка при перемещении в " & arrTargets(i) & Err.Description
                    objFile.WriteLine time & chr(9) & " " & " [ " & objItem.Path & " ] " & " ---> Ошибка при перемещении в " & " [ " & arrTargets(i) &  " ] " & chr(9) & " - ( " & Err.Description & " ) "
                    Err.Clear
                End If
            Next 
Else
            If blnIsConsole Then WScript.Echo strDir & " ---> Не найдено соответствий шаблону " & arrPatterns(i) 
 
        End If
    Next
 
    On Error GoTo 0
    For Each objItem In objFS.GetFolder(strDir).SubFolders
        Call View_Folder(objItem.Path)
    Next
    If blnIsConsole Then WScript.Echo "========="
End If
End Function
Изменил вывод под себя, а то картинку сразу на 2-3 страницы раздувало.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
strFile = ("D:\имя.jpg")
Set objFS = CreateObject("Scripting.FileSystemObject")
strPath = objFS.GetParentFolderName(strFile)
strName = objFS.GetBaseName(strFile)
strTemp = objFS.BuildPath(strPath, strName & ".html")
Set objFile = objFS.CreateTextFile(strTemp, True)
strTemp = objFS.GetFileName(strFile)
 
objFile.Write "<html><head></head><body><div style=""position:relative ; left:330px;  top:950px;""> <h4>" & strTemp & "</h4></div><img src=" & strTemp & "   height=""95%"">  </body></html>"
 
objFile.Close
Вот собрать всё в один почему-то пока не получилось, не так уж я хорошо в этом шарю ...
0
6986 / 2876 / 1106
Регистрация: 06.06.2017
Сообщений: 9,767
31.10.2017, 03:17
Цитата Сообщение от Dmitrii
И можете продемонстрировать способ решения обсуждаемой задачи с помощью этого метода?
С ходу нет. Разве что с помощью такого компонента.
Кстати, ваш код можно сократить до:
Visual Basic
1
2
3
4
5
6
7
8
strFile = "D:\Temp\1.jpg"
strTemp = Left(strFile, Len(strFile) - 3) & "html"
strName = Mid(strTemp, InStrRev(strTemp, "\") + 1)
With CreateObject("Scripting.FileSystemObject").CreateTextFile(strTemp, 1)
    .Write "<html><head></head><body><img src=" & strName & "><h3>" & strName & "</h3></body></html>"
    .Close
End With
CreateObject("Shell.Application").NameSpace(0).ParseName(strTemp).InvokeVerb "print"

Цитата Сообщение от Gomorra
Следит за диском V
Не жалко так диск нагружать? Вы же сперва писали о слежении за некой папкой. Лучше уж LogParser подключить для нормального поиска.
Несколько странно выглядит скрипт. objFS зачем-то повторно в функции объявлен. arrPatterns содержит xls, хотя печатать нужно картинки. Тем более, что нет смысла в массиве и цикле, маски перечисляются через ';'. В 50 строке 64 стоит заменить на 8256. В 53 строке & "\\" на конце надо писать ( косяк форума). И вообще перемещать имеет смысл уже после цикла с печатью:
Visual Basic
1
2
3
4
5
For Each D in Split("D J K")
  For i = 1 To 3
    objFS.MoveFile strDir & "\Имя" & i & "*.jpg, D & ":\"
  Next
Next
Но далее я вижу проверку на ошибку перемещения (54 строка) и последующее протоколирование. А ошибки с чем могут быть связаны? Диск не доступен или что?
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
31.10.2017, 05:34
Gomorra, надо ли понимать, что предложенный мной вариант в ваших условиях оказался работоспособным?
Цитата Сообщение от FlasherX Посмотреть сообщение
... ваш код можно сократить...
Исходный вариант, разумеется, не оптимизирован, но предложен именно в таком виде, во-первых, как более удобочитаемый (учитывая скромный опыт автора темы в написании сценариев), во-вторых, как более надёжный (учитывая мой личный опыт в сравнительной оценке работоспособности методов InvokeVerb и DoIt).
Кстати, в вашем варианте имеется ошибка, т.к. в теге <IMG> указывается имя HTML-файла, а не файла картинки.
Цитата Сообщение от FlasherX Посмотреть сообщение
... ошибки с чем могут быть связаны?..
Например, с отсутствием достаточных полномочий на удаление файла из папки-источника.
0
0 / 0 / 2
Регистрация: 29.04.2013
Сообщений: 52
31.10.2017, 09:35  [ТС]
FlasherX, диск специально для этого выделен, а печатать нужно только некоторые файлы по имени )
Всё отлично работает просто в один собрать не вышло, но это не страшно так как через задачи можно врубать их по времени (попеременно). Если когда-нибудь руки дойдут собрать всё в одну кучу - скину, а пока спасибо и на этом
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
31.10.2017, 12:02
Цитата Сообщение от Gomorra Посмотреть сообщение
... в один собрать не вышло...
Собрать - не велика сложность, но для этого надо точно понимать задачу.
0
6986 / 2876 / 1106
Регистрация: 06.06.2017
Сообщений: 9,767
31.10.2017, 14:02
Цитата Сообщение от Dmitrii
как более надёжный (учитывая мой личный опыт в сравнительной оценке работоспособности методов InvokeVerb и DoIt)
И чем же он надёжнее? Я вижу только лишнюю трату времени на поиск в цикле, который имеет смысл только в случае отсутствия канонического глагола.
Цитата Сообщение от Dmitrii
Например, с отсутствием достаточных полномочий на удаление файла из папки-источника.
Меня не гипотетическая сторона вопроса интересует, а фактическая.


Gomorra, вы бы на мои вопросы сперва ответили, т.к. ваш код имеет смысл причесать. И касаемо xls внести ясность бы не помешало.
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
31.10.2017, 15:15
Цитата Сообщение от FlasherX Посмотреть сообщение
... чем же он надёжнее...
Процитирую фрагмент одного из своих комментариев в теме VBS Печать JPEG-изображений - VBScript/JScript: "Из моей практики следует, что непосредственное использование метода InvokeVerb - ненадёжный путь, т.к. гарантировано отправляет на печать текстовые файлы, а картинку может и не отправить (у меня, например, ни на XP Home, ни на XP Pro не отправляет)"(см. #5).
Цитата Сообщение от FlasherX Посмотреть сообщение
... в цикле, который имеет смысл только в случае отсутствия канонического глагола...
Есть и такой смысл в предпочитаемом мной методе. В качестве примера на прикреплённых ниже картинках показываю содержимое контекстного меню для одного и того же HTML-файла, когда он ассоциирован с разными обозревателями на моём нынешнем рабочем месте.
Цитата Сообщение от FlasherX Посмотреть сообщение
... Меня не гипотетическая сторона вопроса интересует, а фактическая
А это и есть фактическая. Утверждаю так, поскольку приведённый автором темы фрагмент кода явно представляет собой видоизменённый фрагмент какого-то из моих сценариев (есть характерные детали). По крайней мере, когда я ставил здесь проверку на наличие ошибки, то подразумевал вероятность именно такой ситуации.
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
31.10.2017, 15:17
Картинки
Миниатюры
Печать с параметрами и перемещение   Печать с параметрами и перемещение  
0
6986 / 2876 / 1106
Регистрация: 06.06.2017
Сообщений: 9,767
01.11.2017, 00:11
Цитата Сообщение от Dmitrii
непосредственное использование метода InvokeVerb - ненадёжный путь
Так и тот путь ненадёжен, т.к. ограничивается рамками локалей, соответствующих заданным глаголам. Хотя способ сиё обойти имеется.
Цитата Сообщение от Dmitrii
у меня, например, ни на XP Home, ни на XP Pro не отправляет
А глагол, случаем, не с амперсандом вводился?
Цитата Сообщение от Dmitrii
Есть и такой смысл в предпочитаемом мной методе.
Так а где смысл, если теряется преимущество с поиском глагола в таких меню?
Цитата Сообщение от Dmitrii
А это и есть фактическая.
Фактическая допустима только со слов топикстартера, не иначе. Неизвестно, по какой причине был заимствован сей момент протоколирования. Возможно, по незнанию.
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
01.11.2017, 08:14
Цитата Сообщение от FlasherX Посмотреть сообщение
... и тот путь ненадёжен...
Однако в сравнительном отношении мне он представляется более надёжным.
Цитата Сообщение от FlasherX Посмотреть сообщение
... А глагол, случаем, не с амперсандом вводился?..
Нет. К тому же, как было сказано, с обработкой текстовых файлов проблем не возникало.
Цитата Сообщение от FlasherX Посмотреть сообщение
... где смысл, если теряется преимущество с поиском глагола в таких меню?
Преимущество в возможности точно диагностировать данную ситуацию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.11.2017, 08:14
Помогаю со студенческими работами здесь

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

Реализовать функции с опциональными параметрами и именованными параметрами
Нужно задачу написать, про ref и out ничего пока не знаю, не понимаю их.. Реализовать функции с опциональными параметрами и...

Подпрограммы с типизированными параметрами -значениями и параметрами-переменными
С помощью подпрограммы подсчитать сумму элементов главной диагонали для матриц 4х4 и 5х5 из вещественных чисел. Добавлено через 1...

Перемещение массовое перемещение значений из столбцов в строки
Добрый день, подскажите пожалуйста каким образом можно сделать следующее перемещение данных: http://********/YmEv7g9HwM7q62

Как задать плавное перемещение картинки в PictureBox (или перемещение самого PictureBox) из точки А в точку Б по прямой?
Необходимо задать плавное перемещение по прямой линии из &quot;А&quot; в &quot;Б&quot; по нажатию &quot;Button&quot;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru