Переход к определённой строке в cmd
Posted: Sat Aug 03, 2019 10:40 pm
Искал команду для перехода к определённой строке/символу через командную строку, не нашёл. Имеется ли такая возможность?
Code: Select all
AkelPad.exe Find"найти слово"Code: Select all
AkelPad.exe GoTo"3"
AkelPad.exe GoTo"3:8"
AkelPad.exe GoTo"-1:10000"Dimsok wrote:И как это в комстроку прописать? "\AkelPad.exe" "file" GoTo"3:8", к примеру, спрашивает, создать новый файл C\go to 3:8?
Ну вот пример на AutoIt3:Dimsok wrote:Может, через какой-нибудь скрипт попробовать. Есть что-то похожее?
Ещё всякие команды для примера#include <SendMessage.au3>
#include <GuiRichEdit.au3>
; Запуск AkelPad
; Run('C:\ваш путь\AkelPad\AkelPad.exe')
; Ожидание максимум 5 секунд до момента, когда оно станет существующим
$hWnd = WinWait("[CLASS:AkelPad4]", "", 5) ; без таймаута (5) ожидание бесконечно
If Not $hWnd Then
MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
Exit
EndIf
; Ожидание 1 секунды зависит от количества файлов, иначе следующие команды отправятся в пустоту. Если AkelPad открыт, то задержка не нужна.
Sleep(1000)
$hEdit = ControlGetHandle($hWnd, "", "AkelEditW1")
If Not $hEdit Then
MsgBox(4096, 'Сообщение', 'Окно редактирования не найдено, завершаем работу скрипта')
Exit
EndIf
; Любой из вариантов
; _SendMessage($hEdit, 177, 122, 122)
_GUICtrlRichEdit_GotoCharPos($hEdit, 122)
#include <GuiRichEdit.au3>
; Запуск AkelPad
; Run('C:\ваш путь\AkelPad\AkelPad.exe')
; Ожидание максимум 5 секунд до момента, когда оно станет существующим
$hWnd = WinWait("[CLASS:AkelPad4]", "", 5) ; без таймаута (5) ожидание бесконечно
If Not $hWnd Then
MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
Exit
EndIf
$hEdit = ControlGetHandle($hWnd, "", "AkelEditW1")
If Not $hEdit Then
MsgBox(4096, 'Сообщение', 'Окно редактирования не найдено, завершаем работу скрипта')
Exit
EndIf
$info = ''
$info &= "Число строк" & @TAB & @TAB & _GUICtrlRichEdit_GetLineCount($hEdit) & @CRLF
$info &= "1-я видимая" & @TAB & @TAB & _GUICtrlRichEdit_GetNumberOfFirstVisibleLine($hEdit) & @CRLF
$info &= "Позиция начала строки" & @TAB & @TAB & _GUICtrlRichEdit_GetFirstCharPosOnLine($hEdit) & @CRLF
$info &= "Символов в строке" & @TAB & @TAB & _GUICtrlRichEdit_GetLineLength($hEdit, -1) & @CRLF
$info &= "Флаг модификации" & @TAB & @TAB & _GUICtrlRichEdit_IsModified($hEdit) & @CRLF
$info &= "В буфере вставляемые данные?" & @TAB & @TAB & _GUICtrlRichEdit_CanPaste($hEdit) & @CRLF
; $info &= "Включает флаг только чтение" & @TAB & @TAB & _GUICtrlRichEdit_SetReadOnly($hEdit) & @CRLF
MsgBox(0, 'Сообщение', $info)
Code: Select all
AkelPad.exe "c:\File.txt" /if(`SendMain(1204 /*AKD_GOTO*/, 0x1 /*GT_LINE*/, "10:3")`, "", "")
Code: Select all
AkelPad.exe "c:\File.txt" /Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.SendMessage(AkelPad.GetMainWnd(), 1204 /*AKD_GOTO*/, 0x1 /*GT_LINE*/, "10:3");`)
А есть возможность выделять определённое количество символов? Например, 10:3,6?AkelPad.exe "c:\File.txt" /if(`SendMain(1204 /*AKD_GOTO*/, 0x1 /*GT_LINE*/, "10:3")`, "", "")
Если есть возможность запустить скрипт js, то можно всё.Dimsok wrote:А есть возможность выделять определённое количество символов? Например, 10:3,6?
Пример чего?Dimsok wrote:Покажите пример.
Code: Select all
AkelPad.SetSel(5, 10);Code: Select all
// Получаем позицию символа в начале указанной строки
function GetBeginLine(nLine)
{
return SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine, 0);
}
Не надо в EvalCmd.js добавлять никаких команд по выделению. Нужно создать свой скрипт, в котором делаешь, что хочешь, а в командной строке вызываешь не EvalCmd.js, а свой скрипт. Передача параметров своему скрипту по аналогии с передачей параметров скрипту EvalCmd.js.AZJIO wrote:В скрипт EvalCmd.js добавь команду выделения текстаCode: Select all
AkelPad.SetSel(5, 10);