В 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 и Enter 2 помещает путь к файлу моего TXT в буфер обмена. То, что я хочу написать в командной строке, не

pandoc -o "% Буфер обмена%"

скорее

pandoc -o pathToFile.pdf pathToFile.txt

где pathToFile.txt - это то, что у меня есть в буфере обмена. (Так что мне нужно поставить DEL3 PDF SPACE PASTE ENTER). Как я могу это сделать?

2 ответа2

1

Что касается первой части вашего кода, вы также можете извлечь выгоду из использования 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

В приведенном выше коде «А» означает активное окно. На самом деле я не пытался протестировать этот код ... просто убедитесь, что названия пунктов меню точно соответствуют тому, что вы хотели бы выбрать.

1

Попробуйте запустить Pandoc непосредственно из команды Run, передавая буфер обмена как параметр

Run, pandoc -o "%Clipboard%"

Что касается вашего редактирования:

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .