[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创教程] 用 PowerShell 输出中文到剪贴板

本帖最后由 victorwoo 于 2014-7-21 16:57 编辑

原始链接:用 PowerShell 输出中文到剪贴板
发表日期:2014-07-22


# 方法一 通过 clip.exe

用 PowerShell 将字符串输出到剪贴板的最简单方式是:
  1. 'abc' | clip.exe
复制代码
不过直接这么使用的话,如果待输出的字符串是包含中文的,那么剪贴板里的内容会出现“乱码”:
  1. 'abc中文def' | clip.exe
复制代码
剪贴板里的内容变成:
  1. abc??def
复制代码
这是因为为了兼容旧程序,管道操作缺省将字符串采用 ASCII 编码,因此对于中文字符,被转换成了“??”。解决方案如下:
  1. $OutputEncoding = [Console]::OutputEncoding
  2. 'abc中文def' | clip.exe
复制代码
# 方法二 通过 WPF 方法

以 `-sta` 参数启动 PowerShell 后,执行以下代码:
  1. Add-Type -Assembly PresentationCore
  2. [Windows.Clipboard]::SetText('abc中文def')
复制代码
PowerShell 2.0 的控制台,缺省设置是 MTA;PowerShell 3.0 的控制台,缺省设置是 STA。

关于 `-sta` 的知识,请参见PowerShell中的 STA和MTA

参考材料:
- $OutputEncoding to the rescue
- Powershell能否将文件列表写入剪切板
- PowerShell中的 STA和MTA
- PowerShell.exe Command-Line Help
- QQ 群 *PowerShell技术交流(271143343) 2014-07-01 的讨论
1

评分人数

    • CrLf: $OutputEncoding = [Console]::OutputEncod技术 + 1
PowerShell 群:271143343

$OutputEncoding = [Console]::OutputEncoding

原来如此,点赞!

TOP

返回列表