Възможно ли е да се разшири функционалността на автодовършване, базирано на 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). Отразете ехото на всеки знак, направете нещо специално в раздела, когато потребителят натисне enter, изпълнете командния ред, който сте създали в паметта, като уловите неговия stdout с помощта на 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: в Start - Run - chkdsk стартира в конзола, но CMD изобщо не стартира). - person Serenity; 18.03.2015