Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - печать из буфера

Ответить
Настройки темы
CMD/BAT - печать из буфера

Аватара для cher

ветеринар


Сообщения: 1509
Благодарности: 168


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


есть в буфере текст.в текстовый документ его вставлять неохота/неинтересно...
как из cmd вывести на печать на принтер по умолчанию в количестве 1 копии?
так чтоб "запоминаемо" было.
длинный скрипт ниасилю

Отправлено: 21:33, 19-06-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


cher, чистый текст, неформатированный?

Отправлено: 22:19, 19-06-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для cher

ветеринар


Сообщения: 1509
Благодарности: 168

Профиль | Сайт | Отправить PM | Цитировать


Iska, да.

-------
Коми форум


Отправлено: 22:21, 19-06-2011 | #3


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


http://soft.oszone.net/program/7092/NirCmd

и вот

http://forum.oszone.net/thread-150063.html

Отправлено: 22:27, 19-06-2011 | #4


Аватара для cher

ветеринар


Сообщения: 1509
Благодарности: 168

Профиль | Сайт | Отправить PM | Цитировать


ferget, а внаглую без использования сторонних утилит и без замысловатого варианта во второй ссылке?

-------
Коми форум


Отправлено: 22:39, 19-06-2011 | #5


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


нет в cmd инструмента для работы с буфером обмена
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:46, 19-06-2011 | #6


Аватара для cher

ветеринар


Сообщения: 1509
Благодарности: 168

Профиль | Сайт | Отправить PM | Цитировать


Цитата ferget:
нет в cmd инструмента для работы с буфером обмена »
блин... вроде чисто интуитивно должно быть...
т.е в любом случае надо создавать txt. а это полностью снимает вопрос темы

-а если вставить текст в cmd? не прокатит?

-------
Коми форум


Отправлено: 22:50, 19-06-2011 | #7


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


есть такое

echo ZZZZ > prn:

но вроде надо принтер настраивать

Отправлено: 00:07, 20-06-2011 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата ferget:
нет в cmd инструмента для работы с буфером обмена »
Вроде как в Vista+ есть: «clip.exe» (в более ранних входил в состав «Resource Kit'ов»), но для помещения в буфер обмена.

Можно попробовать использовать получение содержимого буфера обмена посредством «mshta.exe»: CMD/BAT: использование mshta.exe, перенаправление во временный файл, печать и удаление временного файла. Например:
читать дальше »
Код: Выделить весь код
@echo off
setlocal

call :TempFileName

MSHTA.EXE "javascript:var s=clipboardData.getData('text');if(s)new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(s);close();" 1>"%TempFileName%"
notepad.exe /p "%TempFileName%"
del "%TempFileName%"

endlocal
exit /b 0

rem ==========================================================================
rem Функция TempFileName()
rem ==========================================================================
:TempFileName
	setlocal enableextensions enabledelayedexpansion

:NextName
	set sTempFileName=%temp%\temp%random%.tmp

	if exist %sTempFileName% goto :NextName

	set sProcName=%~0

	endlocal & set %sProcName:~1%=%sTempFileName%
	exit /b 0
rem ==========================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:39, 20-06-2011 | #9


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата ferget:
есть такое
echo ZZZZ > prn:
но вроде надо принтер настраивать »
перенаправить локальный порт (LPT1) на сетевой принтер через NET USE

если установлен .NET
батник "компилируется" в EXE (сабж)
читать дальше »
Код: Выделить весь код
for /f "delims=" %%a in ('dir /s/a-d/b/od "%windir%\Microsoft.NET\Framework\vbc.exe"') do set "vbc=%%a"
(echo Imports System.IO
 echo Imports System.Drawing.Printing
 echo Imports System.Runtime.InteropServices
 echo Module Test
 echo ^<StructLayout^(LayoutKind.Sequential, CharSet:=CharSet.Unicode^)^> Structure DOCINFOW
 echo ^<MarshalAs^(UnmanagedType.LPWStr^)^> Public pDocName    As String
 echo ^<MarshalAs^(UnmanagedType.LPWStr^)^> Public pOutputFile As String
 echo ^<MarshalAs^(UnmanagedType.LPWStr^)^> Public pDataType   As String
 echo End Structure
 echo ^<DllImport^("winspool.Drv",EntryPoint:="OpenPrinterW",SetLastError:=True,CharSet:=CharSet.Unicode,ExactSpelling:=True,CallingConvention:=CallingConvention.StdCall^)^> Public Function OpenPrinter^(ByVal src As String,ByRef hPrinter As IntPtr,ByVal pd As Long^) As Boolean
 echo End Function
 echo ^<DllImport^("winspool.Drv",EntryPoint:="ClosePrinter",SetLastError:=True,CharSet:=CharSet.Unicode,ExactSpelling:=True,CallingConvention:=CallingConvention.StdCall^)^> Public Function ClosePrinter^(ByVal hPrinter As IntPtr^) As Boolean
 echo End Function
 echo ^<DllImport^("winspool.Drv",EntryPoint:="StartDocPrinterW",SetLastError:=True,CharSet:=CharSet.Unicode,ExactSpelling:=True,CallingConvention:=CallingConvention.StdCall^)^> Public Function StartDocPrinter^(ByVal hPrinter As IntPtr,ByVal level As Int32,ByRef pDI As DOCINFOW^) As Boolean
 echo End Function
 echo ^<DllImport^("winspool.Drv",EntryPoint:="EndDocPrinter",SetLastError:=True,CharSet:=CharSet.Unicode,ExactSpelling:=True,CallingConvention:=CallingConvention.StdCall^)^> Public Function EndDocPrinter^(ByVal hPrinter As IntPtr^) As Boolean
 echo End Function
 echo ^<DllImport^("winspool.Drv",EntryPoint:="StartPagePrinter",SetLastError:=True,CharSet:=CharSet.Unicode,ExactSpelling:=True,CallingConvention:=CallingConvention.StdCall^)^> Public Function StartPagePrinter^(ByVal hPrinter As IntPtr^) As Boolean
 echo End Function
 echo ^<DllImport^("winspool.Drv",EntryPoint:="EndPagePrinter",SetLastError:=True,CharSet:=CharSet.Unicode,ExactSpelling:=True,CallingConvention:=CallingConvention.StdCall^)^> Public Function EndPagePrinter^(ByVal hPrinter As IntPtr^) As Boolean
 echo End Function
 echo ^<DllImport^("winspool.Drv",EntryPoint:="WritePrinter",SetLastError:=True,CharSet:=CharSet.Unicode,ExactSpelling:=True,CallingConvention:=CallingConvention.StdCall^)^> Public Function WritePrinter^(ByVal hPrinter As IntPtr,ByVal pBytes As IntPtr,ByVal dwCount As Int32,ByRef dwWritten As Int32^) As Boolean
 echo End Function
 echo Sub Main^(^)
 echo Dim ps As New System.Drawing.Printing.PrinterSettings
 echo Dim szPrinter As String = PS.PrinterName
 echo Dim szString  As String = My.Computer.Clipboard.GetText
 echo Dim dwCount As Int32 = szString.Length^(^)
 echo Dim pBytes As IntPtr = Marshal.StringToCoTaskMemAnsi^(szString^)
 echo Dim di As DOCINFOW
 echo di.pDocName="Clipboard RAW Printing"
 echo di.pDataType = "RAW"
 echo Dim hPrinter As IntPtr
 echo Dim dwWritten As Int32
 echo If OpenPrinter^(szPrinter,hPrinter,0^) Then
 echo If StartDocPrinter^(hPrinter,1,di^) Then
 echo If StartPagePrinter^(hPrinter^) Then
 echo WritePrinter^(hPrinter,pBytes,dwCount,dwWritten^)
 echo EndPagePrinter^(hPrinter^)
 echo End If
 echo EndDocPrinter^(hPrinter^)
 echo End If
 echo ClosePrinter^(hPrinter^)
 echo End If
 echo Marshal.FreeCoTaskMem^(pBytes^)
 echo End Sub
 echo End Module
)>"%~n0.tmp"
"%vbc%" "%~n0.tmp" /out:"%~n0.exe"
del "%~n0.tmp" "%~f0"& exit

источник: How to send raw data to a printer by using Visual Basic .NET

Последний раз редактировалось amel27, 20-06-2011 в 07:27. Причина: оформление

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:40, 20-06-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - печать из буфера

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] CLCL - Менеджер буфера обмена Windows Stanner Наборы обновлений для Windows XP/2003/Windows 7 7 07-02-2013 16:04
[решено] вставка из буфера cher Хочу все знать 3 05-06-2011 07:06
Медиа - nero 6 ошибка опустошения буфера arturamba Microsoft Windows 2000/XP 2 15-06-2009 07:05
RDP/Citrix/Term - [решено] печать через уд.раб. стол <RDP, Windows 2003, печать> ВладимирТ Сетевые технологии 7 14-02-2008 12:10
Ошибка переполнения буфера обмена PrianikOV Microsoft Windows 2000/XP 2 06-02-2006 16:03




 
Переход