Можно ли расширить функциональность автозаполнения на основе TAB?

При использовании клавиши TAB в командной строке dos вы можете переключаться между именами файлов и папок в текущем каталоге... (и, похоже, это работает даже с историческими командами через DOSKEY). Кто-нибудь знает, можно ли как-то расширить это, чтобы нажатие TAB (или любой другой комбинации клавиш) выполняло автозаполнение из предоставленного списка элементов, а также из ранее упомянутых источников? Я думаю, что пример в порядке ....

Мое желаемое поведение - добавить еще один источник к возможным элементам, которые появятся при использовании TAB. На моей работе мы активно используем продукт для планирования под названием AutoSys и администрируем его почти исключительно через командную строку. По сути, я хотел бы найти способ циклически переключаться между именами заданий, чтобы подсказка автоматически заполняла имена, когда у нас уже есть первая часть имени задания...

Обычное использование команды: 'autorep -J JOBNAME'

Пример того, что я хотел бы сделать: «autorep -J ABC_C_EXPORT_Re» [TAB], где нажатие клавиши TAB позволяет мне циклически переключаться между заданиями, начинающимися с «ABC_C_EXPORT_Re», пока я не найду то, что хочу.

Кажется возможным (но очень плохим) решением было бы создать один пустой файл и назвать его для каждого задания в среде... Но это не кажется мне эффективным решением проблемы, особенно учитывая, что в любой момент однажды мы можем иметь от пятидесяти тысяч до ста тысяч рабочих мест в нашей среде.

Прошу прощения за то, что изложил этот странный вопрос еще более странным образом..... Надеюсь, я хотя бы смог передать смысл основного вопроса, который задаю. Нечто подобное было бы огромным подспорьем для нашего персонала поддержки операций, которому приходится целый день искать работу через командную строку!

Спасибо, что посмотрели! Скотт


person Scott Fenton    schedule 18.03.2015    source источник


Ответы (1)


Вы можете сделать свой собственный командный процессор довольно просто.

Вот кое-что из Filter.vbs. В отличие от этого, вам нужно читать символы, а не строки (так что .read(1), а не .readline). Повторяйте каждый символ, делайте что-то особенное на вкладке, когда пользователь нажимает ввод, выполняйте командную строку, которую вы создали в памяти, захватывая ее стандартный вывод с помощью wshshell.exec.

Вот кое-что из помощи

Do While Not WScript.StdIn.AtEndOfLine

   Input = Input & WScript.StdIn.Read(1)

Loop

WScript.Echo Input

Вот меню, не все включено.

Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout


Showmenu

Sub ShowHelpMenu
    outp.writeline " -----------------------------------------------------------------------------"
    outp.writeblanklines(1) 
    outp.writeline " Menu"
    outp.writeline " ----"
    outp.writeblanklines(1) 
    outp.writeline "  1 Help              2 HTML Help          3 Version           4 History"
    outp.writeblanklines(1) 
    outp.writeline "  5 Exit"
    outp.writeblanklines(1) 
    outp.write "Filter>"
End Sub

'=============================================
Sub ShowMenu
    Do
        ShowHelpMenu
        Answ=Inp.readline
        If Answ = "1" Then
            ShowGeneralHelp "TEXT"
        Elseif Answ = "2" Then
            ShowGeneralHelp "HTML"
        Elseif Answ = "3" Then
            Version
        Elseif Answ = "4" Then
            History
        Elseif Answ = "5" Then
            Exit Do
        End If
    Loop
End Sub

'=============================================
Sub History
    On Error Resume Next
    WshShell.Run """" & FilterPath & "FilterHistory.txt""" , 1, False
    err.clear
End Sub

'=============================================
Sub Version
    outp.writeblanklines(1) 
    outp.writeline " Version"
    outp.writeline " -------"
    outp.writeblanklines(1) 
    outp.writeline "   Filter Ver 0.6  -  2015  (Public Domain)"
    outp.writeblanklines(1)
    outp.writeline "   by David Candy"
    outp.writeblanklines(1)
End Sub
person Serenity    schedule 18.03.2015
comment
PS: Консоли не нуждаются в CMD. CMD — обычная консольная программа, в ней нет ничего особенного. Chkdsk — еще одна консольная программа. Вы можете запустить chkdsk в консоли, не загружая CMD и не имея к этому никакого отношения. (введите chkdsk c: в Пуск - Выполнить - chkdsk запускается в консоли, но CMD вообще не запускается). - person Serenity; 18.03.2015