【问题标题】:Send printer control codes using Powershell使用 Powershell 发送打印机控制代码
【发布时间】:2026-02-01 10:55:02
【问题描述】:

我需要使用 Powershell 将一系列控制代码(十进制 27、112、0、25 和 250)发送到 USB 打印机“Epson TM 打印机”。

我想将十进制的控制代码放在纯文本文件中。例如键.txt。

keys.txt 的内容

27
112
0
25
250

将控制代码发送到 USB 打印机的最简单方法是什么?我在考虑是否需要创建一个指向同一个 USB 端口的“Generic / Text only”打印机,然后使用 Out-Printer“Generic / Text only”将控制代码发送给它。

我试过了

gc keys.txt | out-printer "Generic / Text only"

但结果不是我想要的。非常感谢任何帮助。

谢谢

【问题讨论】:

  • 你应该是able to open a stream to the printer port 并编写你的命令。

标签: powershell printing


【解决方案1】:

您应该能够open a stream to the printer port 并编写您的命令

this 之类的东西可以在 C# 中实现。只需按照此处的说明在 powershell 中调用或转换它 - http://msdn.microsoft.com/en-us/gg981616

System.IO.StreamWriter sr = new System.IO.StreamWriter(@"\\.\LPT1");
sr.Write(0x1b); 
sr.Write('k'); 
sr.Write('1'); 
sr.Write("Hello"); // print in Sans Serif
sr.WriteLine();
sr.Flush();
sr.Close();

【讨论】:

  • 但是,“writer”以“w”开头:)。
  • 这不起作用。我有一个错误:FileStream 不会打开 Win32 设备,例如磁盘分区和磁带驱动器。避免在路径中使用“\\.\”。
  • 也许你可以用谷歌搜索那个特定的错误并尝试不同的方法。
【解决方案2】:
$s = [char]0x1B +[char]0x70 + [char]0x00 + [char]0x19 + [char]0xFA
Out-Printer -Name <yourprinter> $s

【讨论】:

  • 谢谢大卫。我发现如果我从文件中读取代码,我需要用 [char][byte] 屏蔽它们。然而,我刚刚发现了另一个问题。如果我使用 Out-Printer 命令将控制代码发送到打印机,则会有一些额外的字符(0a、20、30、33 等)与我自己的代码一起发送到打印机。我认为打印机驱动程序中可能有一些可配置的东西,但我找不到任何东西。 Generic / Text only 驱动程序是如此简单......我不知道出了什么问题。
  • 我刚刚找到了解决问题的直通打印机驱动程序!! Windows 通用/纯文本驱动程序不太擅长通过....