AHK 将 txt 导出为 pdf

AHK 将 txt 导出为 pdf

在 notepad++ 中,我想要一种使用 AHK 的方法,使用 pandoc 快速将其从 txt 导出为 pdf。

我已经完成了一半的代码。它不起作用。我想要做的是

  1. 转到编辑>复制到剪贴板>将当前文件路径复制到剪贴板
  2. 打开命令行
  3. 写入“pandoc -o ^v Del3 pdf space ^v enter”

    ^!e::
    Send, {Alt Down}e{Alt Up}
    Sleep, 100
    Send, {Down 8} 
    Sleep, 300
    Send, {Enter 2}
    Run, cmd.exe
    Sleep, 500
    Send, pandoc -o
    Send, {Ctrl Down}v{Ctrl Up}
    

我做错了什么?正确的脚本是什么样的?

编辑:

按下 8 并输入 2 将我的 TXT 文件路径放入剪贴板。我想在命令行中写入的内容不是

pandoc -o“%剪贴板%”

反而

pandoc -o 路径到文件.pdf 路径到文件.txt

在哪里路径到文件.txt就是我剪贴板中的内容。(所以我需要输入 DEL3 PDF SPACE PASTE ENTER)。我该如何实现呢?

答案1

尝试直接从运行命令运行 Pandoc,并将剪贴板作为参数传递

Run, pandoc -o "%Clipboard%"

关于您的编辑:

; Remove file-ending
fileNamePath := RegExReplace(Clipboard, "\..*$", "")

; Run command
Run, pandoc -o "%fileNamePath%.pdf" "%Clipboard%"

答案2

关于代码的第一部分,您还可以受益于使用 WinMenuSelectItem 来获得更快的速度/可靠性来选择菜单项,而无需发送击键并等待菜单响应。

这适用于大多数菜单,例如 Notepad++ 中的菜单(但不适用于 Microsoft Ribbon 应用程序)。

将上面的代码片段合并到示例中...

^!e::
lastClip := clipboardAll ; save the clipboard contents so they don't get overwritten
clipboard := ""

WinMenuSelectItem, A,,Edit,Copy to Clipboard,Current Full File path to Clipboard     ; A = Active Window... make sure menu descriptions match exactly

clipWait, 1   ; wait for new clipboard contents max 1 second
if ErrorLevel
{
    MsgBox, The attempt to copy failed
    clipboard := lastClip
    return
}

; Remove file-ending
fileNamePath := RegExReplace(Clipboard, "\..*$", "")

; Run command
Run, pandoc -o "%fileNamePath%.pdf" "%Clipboard%"

clipboard := lastClip     ; restore clipboard to previous contents    

return

在上面的代码中,“A”表示活动窗口。我实际上没有尝试测试此代码……只需确保菜单项名称与您想要选择的内容完全匹配即可。

相关内容