将 Windows 文本文件的内容复制到剪贴板的开源程序

软件推荐 视窗 开源的 纯文本
2021-10-21 01:37:14

背景

我在我的 $DAYJOB 中构建了许多文本文件,然后以非常复杂的 Excel 文档提交给审查委员会。每个文本文件的内容必须粘贴到单个 Excel 选项卡上的 TextBox 中(适当命名)。对于这些文本文件,任何给定的 Excel 工作表都可能包含 30 到 220 个不同的选项卡。

过去的工作

最初我将一个 Python 脚本指向一个充满文本文件的 windows 文件夹,并要求它构建一个空白的 exel 文档;然后我将标签复制到格式化的 Excel 模板中。但是,我们公司的桌面安全措施发生了变化,现在破坏了该脚本。所有 Excel 文档都由 DRM 安全中间件加密,这会破坏我的脚本化 Excel 工作表。我停止精神错乱的请求无济于事。

问题

现在我的解决方案是手动复制和粘贴(诚然,我更像是一个 unix 程序员而不是 windows 人)。单击一百个文本文件并将内容手动复制到 excel 中是令人麻木的,并且它会随着所需的每次单击/击键事件而成倍增加。对于每个文件,我似乎花费了一半以上的精力:

  • 双击打开文件(事件 1 和 2 - 点击)
  • 使用Cntla(事件 3 - 击键)全选
  • Cntlc使用(事件 4 - 击键)复制到剪贴板
  • Cntlv使用(事件 5 - 击键)粘贴到等待的 Excel 文本框中
  • 关闭打开的文件,这样它们就不会累积(事件 6 - 单击)

我很想找到一个可以接受的方法来解决这个问题。我发现了一个叫做Copy Text Contents的东西,据称它两次点击文件内容复制到剪贴板;然而,该软件是免费的但封闭源代码。我不能在我们的桌面上安装闭源免费软件;但是,开源免费软件解决方案是可以接受的。

问题

我想要这个问题的开源解决方案;我正在寻求Copy Text Contents的开源替代方案,但如果有人提出可与 excel 配合使用的替代软件解决方案,我会全力以赴。

注意:必须保留文本文件中的换行符。

4个回答

在这里,我为你创建了一个开源应用程序,它应该可以做你想做的事情。

https://bitbucket.org/mrexodia/copyfile

如果你想改进这件事,我接受拉取请求。

编辑:

概述:CopyFile 是一个在 Windows 资源管理器的上下文菜单中注册“CopyFile”条目的小程序。它复制 ASCII 文件的内容(不支持 UNICODE 文件)。

啊,我明白了,你想做的xsel -bi data.txt; xdotool search --class Excel key ctrl+v,只有在 Windows 上。

这是脚本的工作,而不是临时应用程序。

AutoHotkey是用于 Windows 的通用桌面自动化脚本环境。它是开源的。脚本语言结合了 Basic 语法的优雅与 Unix shell 解析的直观性和 TeX 扩展的规律性,但它完成了工作。

这是一个执行我上面描述的脚本。

#NoEnv
; #Warn
SendMode Input

;; Read the file passed on the command line (or prompt for one)
If %0% = 0
{
    FileSelectFile, 1
    IfNotEqual, ErrorLevel, 0, Exit, 2
}
FileRead, data, %1%
IfNotEqual, ErrorLevel, 0, Exit, 2
;; Copy the content to the clipboard
clipboard = %data%

;; Locate and activate the main Excel window.
;; To reach a dialog box, you may need to change the class. Run the AutoHotKey
;; companion program Window Spy to determine the class name.
WinGet, w, ID, A
WinActivate, ahk_class XLMAIN
IfNotEqual, ErrorLevel, 0, Exit, 1
WinGet, ww, ID, A

;; Send the paste shortcut
Send ^v

;; Restore the original active window
WinActivate, ahk_id %w%

从命令行,运行

autohotkey \path\to\copy-to-excel.ahk data.txt

您可以将命令添加\path\to\autohotkey \path\to\copy-to-excel.ahk到资源管理器的右键菜单中;请参阅如何将程序添加到所有文件的上下文菜单中?,更改 Windows 默认使用的程序如何在 Windows 7 中设置文件关联(不是“打开”,而是其他)自定义 Windows 7 或 Vista 发送到菜单,具体取决于您希望命令显示的确切位置和时间菜单。

我回答你问题的这一部分:

如果有人想出一个脚本化的 excel 替代方案,我会全力以赴。

AutoIt是一种脚本语言,它允许您自动化 Windows 的用户界面,然后绕过您的安全限制。

为了满足您的需求,AutoIt 提供了基本的文件访问功能(我认为就像您在 Python 中所做的那样)来读取您的.txt文件的内容。然后通过其 Windows gui 的自动化,您可以将内容写入您的 Excell 文件(我建议使用键触发器而不是鼠标触发器),就像人类会做的那样。

它是一种编程脚本语言,因此非常强大,但对于不熟悉的公众来说可能会很复杂,但您似乎对编程很满意。实际上提供了一个宏记录器,对于学习它非常有用。

AutoIt 以其创建的大量游戏机器人而闻名。我个人用它来自动复制/粘贴文本并通过网络发送。

我使用 Ditto,它是一个开源剪贴板管理器。

Ditto 允许您将内容复制并粘贴到任何 Windows 应用程序中。让我选择同上的事情 -

  • 可搜索的剪贴板历史记录
  • 为前 10 个剪贴板副本分配热键,让您轻松粘贴
  • 无需触摸鼠标即可使用
  • 粘贴的全局热键
  • 剪贴板操作中包含/排除的应用程序的单独列表
  • 组织要粘贴到组中的文本,以便于组织
  • 要保留的天数和剪贴板条目数量的可配置设置

Ditto 以GPLv3 许可程序的形式提供。