是否可以扩展基于TAB的自动完成功能?

时间:2015-03-18 07:15:11

标签: batch-file command-line dos

在dos命令提示符下使用TAB键时,您可以遍历当前目录中的文件和文件夹的名称...(它甚至似乎也可以通过DOSKEY使用历史命令)。有没有人知道是否有可能以某种方式扩展这一点,以便按TAB(或任何其他组合键)从提供的项目列表以及前面提到的来源自动完成?我认为一个例子是有序的......

我希望的行为是为使用TAB时出现的可能项添加另一个来源。在我的工作中,我们大量使用名为AutoSys的调度产品,并且几乎完全通过命令提示符来管理它。基本上我希望找到一种循环通过作业名称的方法,这样当我们已经输入作业名称的第一部分时,提示会自动填写名称...

常用命令用法: 'autorep -J JOBNAME'

我想做的例子: 'autorep -J ABC_C_EXPORT_Re'[TAB] TAB键按下允许我循环显示以'ABC_C_EXPORT_Re'开头的作业,直到找到我想要的作业。

似乎可能(但非常差)的解决方案是为环境中的每个作业创建和命名一个空文件......但这并不能成为解决问题的有效方法,特别是考虑到在任何时候我们都可以在我们的环境中拥有五万到十万个工作岗位。

我为以一种更奇怪的方式提出这个奇怪的问题而道歉......我希望我至少能够传达一种我正在问的核心问题的感觉。这样的事情对我们的运营支持人员来说是一个巨大的帮助,他们必须整天通过命令行找工作!

谢谢你看看! 斯科特

1 个答案:

答案 0 :(得分:0)

您可以轻松制作自己的命令处理器。

这是来自Filter.vbs的东西。与此不同,你想要读取字符而不是行(所以.read(1)而不是.readline)。回显每个字符,在标签上做一些特殊操作,当用户按下enter时执行你在内存中构建的命令行,使用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