專利名稱:命令行數(shù)據(jù)類型發(fā)現(xiàn)和轉(zhuǎn)換的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及命令行和命令行界面。
背景技術(shù):
計算機用戶通常需要找出和使用信息。通常他們可以通過圖形用戶界面或命令行界面找出和使用信息。例如,如果用戶想要找出他辦公室附近的彩色打印機并配置該打印機,他可以通過圖形用戶界面中的菜單、下拉式列表等或命令行界面中的命令行輸入來這樣做。
假定該用戶選擇通過圖形用戶界面來找出和配置彩色打印機。例如,他的公司擁有分布在十幢建筑物中的127臺打印機,可用打印機的下拉式列表可顯示這127臺打印機中的每一臺。通過閱讀這些列出的打印機中每一臺的屬性,用戶確定這些打印機中的十八臺可以彩色打印,且這十八臺中的一臺位于他所在建筑物中。使用該彩色打印機的名稱,該用戶然后可以選擇諸如通過圖形用戶界面來配置該打印機。一旦完成之后,該用戶可以對這臺打印機發(fā)送彩色打印作業(yè)。
在眾多情形中,命令行界面允許用戶以相比圖形用戶界面更快的速度、更高的效率或更有力地找出和使用信息。在以上示例中,用戶研究127臺打印機的屬性以找出他想要的那一臺。這可能花費相當(dāng)可觀的時間。
相反,假定用戶使用命令行來找出和配置該彩色打印機。在這樣的情形中,用戶一般擁有兩個選擇。在第一個選擇中,他輸入第一命令行(例如,“get_printer(獲取打印機)”),讀取其輸出,找出他正尋找的打印機,并使用找到的信息作為第二命令的輸入來鍵入另一命令行(例如,“Configure-Printer printername(配置打印機的打印機名)”)。這里有各種問題。其一是,用戶需要能夠讀取并理解第一命令的輸出。這通常意味著第一命令行以特定格式輸出文本編碼的數(shù)據(jù)(這是人可讀的),以及用戶必須讀完它。這也意味著用戶必須輸入第二命令,并以第二命令可用的格式和編碼輸入所找到的信息。在眾多情況中,該第一選擇也花費相當(dāng)可觀的時間。
在第二選擇中,命令行界面通常通過其“外殼”,使用腳本來自動化大多數(shù)用戶動作。在該情況下,用戶輸入包含第一和第二命令(以及新的第三命令)和其它信息的命令行,它們?nèi)坑糜谡页龃蛴C并配置它。在該情況下,命令行可以讀作$x=get_printer|get_printername 9 color|Configure-Printer $x此處,用戶編寫調(diào)用第一命令“get_printer”以獲得所有打印機上的信息的腳本。它然后基于哪些彩色打印的打印機位于9號建筑物中(“get_printername 9color(獲取打印機9彩色)”)來解析輸出。一旦找到該打印機的名稱,外殼以該打印機的名稱來調(diào)用命令“Configure-Printer(配置打印機)”,從而配置該打印機。
盡管第二選擇可能是有力且有效的,但是它也有問題。命令是類型專用的;它們一般接受和輸出特定類型(例如,以XML編碼和格式化)的數(shù)據(jù)。如果第一命令“get_printer”生成文本編碼和格式化的數(shù)據(jù),但是“Configure-Printer”命令完全不接受文本編碼和格式化的數(shù)據(jù),那么Configure-Printer命令將失敗。
為了解決該問題,命令行命令的眾多創(chuàng)建者將命令標(biāo)準(zhǔn)化成輸出數(shù)據(jù),并僅當(dāng)輸入數(shù)據(jù)是文本編碼時才接受輸入數(shù)據(jù)。但是因為不存在標(biāo)準(zhǔn)格式,文本編碼的數(shù)據(jù)可能難以解析和/或解析它可能易于出錯。
發(fā)明內(nèi)容
呈現(xiàn)了可用于允許對含有上行流命令和下行流命令的命令行的操作的系統(tǒng)和/或方法,其中上行流命令輸出其類型作為對下行流命令的輸入不可接受的數(shù)據(jù)。
例如,該系統(tǒng)和/或方法可包含命令行數(shù)據(jù)流協(xié)議,其中接收來自命令行中上行流命令的輸出,它含有足以允許判斷與該輸出相關(guān)聯(lián)的數(shù)據(jù)類型的標(biāo)簽。通過了解數(shù)據(jù)類型,相關(guān)聯(lián)的數(shù)據(jù)可以被轉(zhuǎn)換成作為下行流命令的輸入可被接收的數(shù)據(jù)類型。
圖1示出了本工具的各種實施例可在其中操作的示例性體系結(jié)構(gòu)。
圖2描述了含有用于允許命令行操作的示例性協(xié)議的示例性進程的流程圖。
圖3描述了用于通過確定和指導(dǎo)上行流命令數(shù)據(jù)類型而允許命令行操作的示例性進程的流程圖。
具體實施例方式
概觀呈現(xiàn)了可用于允許對含有上行流命令和下行流命令的命令行的操作的系統(tǒng)和/或方法(“工具”),其中上行流命令輸出其類型作為對下行流命令的輸入不可接受的數(shù)據(jù)。
在示出的實施例中,命令行數(shù)據(jù)流協(xié)議從命令行中的上行流命令中接收輸出。所接收的輸出具有足以允許確定輸出的數(shù)據(jù)類型的標(biāo)簽。也確定了命令行中的下行流命令的可接受數(shù)據(jù)類型,該輸出將作為對下行流命令的輸入而接收。如果輸出的數(shù)據(jù)類型與下行流命令的數(shù)據(jù)類型不兼容,那么輸出的數(shù)據(jù)類型被轉(zhuǎn)換成對下行流命令兼容的數(shù)據(jù)類型。
在另一示出的實施例中,命令行外殼確定可以作為上行流命令的輸出的數(shù)據(jù)類型以及作為輸入可由下行流命令接受的數(shù)據(jù)類型。如果可以作為輸出的這些數(shù)據(jù)類型之一可接受作為對下行流命令的輸入,那么外殼指導(dǎo)上行流命令以這種類型輸出其數(shù)據(jù)。另一方面,如果命令行外殼程序確定可以作為輸出的數(shù)據(jù)類型作為對下行流命令的輸入都不可接受,那么命令行外殼可以指導(dǎo)上行流命令以可轉(zhuǎn)換為作為輸入可接受的數(shù)據(jù)類型之一的類型輸出數(shù)據(jù)。外殼然后可調(diào)用轉(zhuǎn)換命令將輸出的數(shù)據(jù)類型轉(zhuǎn)換成作為輸入可接受的類型。
在另一示出的實施例中,來自命令的輸出被編碼以包含標(biāo)簽。該標(biāo)簽可包含數(shù)據(jù)輸出的前同步碼,它包含足以允許確定輸出數(shù)據(jù)類型的信息,諸如輸出數(shù)據(jù)類型是如逗號分隔值(CSV)等結(jié)構(gòu)化的數(shù)據(jù),或具有特定模式的可擴展標(biāo)記語言(XML)。
示例性體系結(jié)構(gòu)在詳細(xì)描述本工具的各方面之前,提供示例性體系結(jié)構(gòu)的以下討論以幫助讀者理解在何處以及如何使用本工具的各個方面??梢岳斫猓韵绿峁┑拿枋鰞H包含一個示例,且不旨在將本工具的應(yīng)用限制于一個特定體系結(jié)構(gòu)或環(huán)境。
圖1概括地在100示出了體系結(jié)構(gòu),它包含計算設(shè)備102以及該計算設(shè)備內(nèi)或可由該計算設(shè)備訪問的各個組件。在該特定示例中,計算設(shè)備包含一個或多個處理器104和計算機可讀介質(zhì)106。計算機可讀介質(zhì)包含提供命令行界面108、命令行外殼110、命令112和轉(zhuǎn)換器114的軟件代碼。
多條命令110被示為具有各種可能的輸入和輸出類型。例如,get printer(獲取打印機)命令116能夠接受和輸出文本和CSV類型的數(shù)據(jù),configure printer(配置打印機)命令118能夠接受和輸出CSV和XML類型,pause printer(暫停打印機)命令120能夠接受和輸出ASN.1和XML類型。
多個轉(zhuǎn)換器114也被示為且能夠?qū)⒁粋€或多個命令112的輸出從一個數(shù)據(jù)類型轉(zhuǎn)換成另一個,諸如CSV-XML轉(zhuǎn)換器122、XML-CSV轉(zhuǎn)換器124、文本-XML轉(zhuǎn)換器126、ASN.A-XML轉(zhuǎn)換器128以及XML-ASN.1轉(zhuǎn)換器130。
如將在以下更詳細(xì)描述的,命令行界面接收諸如由計算設(shè)備的用戶輸入的命令行輸入等命令行輸入,并實現(xiàn)或執(zhí)行相關(guān)聯(lián)的命令。命令行外殼諸如通過為命令行內(nèi)的每一命令創(chuàng)建進程并為這些命令管理進程之間的輸入和輸出來管理命令行中的命令。
允許命令行操作以上和以下描述的工具能夠允許對含有上行流命令和下行流命令的命令行的操作,其中上行流命令可輸出其類型作為對下行流命令的輸入不可接受的數(shù)據(jù)。在以下描述的某些示出的實施例中,本工具也通過編碼和轉(zhuǎn)換協(xié)議來允許命令行操作。協(xié)議的轉(zhuǎn)換方面可以諸如由命令行外殼在命令行本身內(nèi)調(diào)用或外部地調(diào)用。在另一示出的實施例中,本工具在沒有編碼和轉(zhuǎn)換協(xié)議的情況下允許操作。
可以單獨或組合地使用這些實施例。因此,命令行可使得在命令行內(nèi)為一個上行流-下行流對調(diào)用轉(zhuǎn)換;由外殼為第二上行流-下行流對調(diào)用另一轉(zhuǎn)換;通過為第三上行流-下行流對檢測和指導(dǎo)上行流的輸出,自動使得對下行流命令的輸入可接受。
這些各個實施例是為說明目的而描述的,而不旨在限制本工具的可用性。
編碼和轉(zhuǎn)換協(xié)議;外部調(diào)用的轉(zhuǎn)換參考圖2,進程200擁有其中外部地調(diào)用轉(zhuǎn)換的示例性編碼和轉(zhuǎn)換協(xié)議。進程200被示為表示由諸如命令行界面108、命令行外殼110和轉(zhuǎn)換器114等計算設(shè)備的元件執(zhí)行的各個操作或動作的一連串框。該進程和此處描述的其它進程可以結(jié)合任何合適的硬件、軟件、固件或其組合來實現(xiàn)。在軟件和固件的情況下,這些進程表示被實現(xiàn)為計算機可執(zhí)行指令的操作集。
在框202處,接收命令行。該命令行可以是從計算設(shè)備102的用戶處接收的,諸如從向命令行界面108中鍵入命令行的用戶接收的。命令行可包含多條命令,諸如一條或多條上行流命令以及一條或多條下行流命令。
在所示的實施例中,接收具有以下句法的命令行$ GET-PRINTER-SystemName PRINTSRV10|PAUSE-PRINTER在該示例中,該命令行含有“GET-PRINTER(獲取打印機)”的上行流命令以及“PAUSE-PRINTER(暫停打印機)”的下行流命令。這些命令在圖1中的116和120處示出。該命令行請求可由具有系統(tǒng)名“PRINTSRV10”的計算設(shè)備訪問的打印機的數(shù)據(jù)。另外,該命令請求暫停該打印機。為執(zhí)行該命令行,上行流命令的輸出(“PRINTSRV10”打印機的數(shù)據(jù))如果可能,可被排入管道至pause printer命令作為輸入。
然而,假定get printer命令的默認(rèn)輸出類型是逗號分隔值(CSV)。也假定pauseprinter命令僅接受ASN.1(抽象句法標(biāo)記1)或XML類型(可擴展標(biāo)記語言類型)的輸入。在該情況下,上行流命令輸出其類型作為對下行流命令的輸入不可接受類型的數(shù)據(jù)。
現(xiàn)在假定上行流命令(“GET-PRINTER”)的輸出如下USA/REDMOND,WA/40/FLOOR2/2015,\\PRINTSRV10\b40-2015-a,0,3,b40-2015-a,\\PRINTSRV10USA/REDMOND,WA/40/FLOOR3/3015,\\PRINTSRV10\b40-3015-b,0,3,b40-3015-b,\\PRINTSRV10USA/REDMOND,WA/40/FLOOR4/4015,\\PRINTSRV10\b40-4015-b,0,3,b40-4015-b,\\PRINTSRV10USA/REDMOND,WA/40/FLOOR5/5015,\\PRINTSRV10\b40-5015-a,0,3,b40-5015-a,\\PRINTSRV1OUSA/REDMOND,WA/40/FLOOR6/6015,\\PRINTSRV10\b40-6015-a,0,3,b40-6015-a,\\PRINTSRV10USA/REDMOND,WA/44/FLOOR2/2662,\\PRINTSRV10\b44-2662-a,0,3,b44-2662-a,\\PRINTSRV10
此處,getprinter命令找到系統(tǒng)名為“PRINTSRV10”的六臺打印機,并以CSV格式產(chǎn)生該輸出。如果該CSV類型的數(shù)據(jù)被饋入至下行流pause printer命令,該pause printer命令將不接受該數(shù)據(jù),使得該命令行失敗。然而,以下示出的編碼和轉(zhuǎn)換協(xié)議可用于即使在pause printer命令不接受CSV格式的情況下也允許該命令行操作。
在框204處,上行流命令的輸出以足以允許確定數(shù)據(jù)輸出類型(諸如它是CSV或XML)的信息來編碼。該編碼位于輸出數(shù)據(jù)流本身內(nèi),諸如具有數(shù)據(jù)流標(biāo)簽。在一個實施例中,數(shù)據(jù)流標(biāo)簽包含數(shù)據(jù)的前同步碼。該前同步碼可包含指示數(shù)據(jù)類型的信息以及關(guān)于數(shù)據(jù)的其它信息,如管理數(shù)據(jù)的模式等。
使用該前同步碼,上行流get printer命令經(jīng)編碼的輸出替代如下#<CSV#ColumnNames:
Location,Name,PrinterState,PrinterStatus,ShareName,SystemName#ColumnTypes:String,String,int,int,String,String#USA/REDMOND,WA/40/FLOOR2/2015,\\PRINTSRV10\b40-2015-a,0,3,b40-2015-a,\\PRINTSRV10USA/REDMOND,WA/40/FLOOR3/3015,\\PRINTSRV10\b40-3015-b,0,3,b40-3015-b,\\PRINTSRV10USA/REDMOND,WA/40/FLOOR4/4015,\\PRINTSRV10\b40-4015-b,0,3,b40-4015-b,\\PRINTSRV10USA/REDMOND,WA/40/FLOOR5/5015,\\PRINTSRV10\b40-5015-a,0,3,b40-5015-a,\\PRINTSRV10USA/REDMOND,WA/40/FLOOR6/6015,\\PRINTSRV10\b40-6015-a,0,3,b40-6015-a,\\PRINTSRV10USA/REDMOND,WA/44/FLOOR2/2662,\\PRINTSRV10\b44-2662-a,0,3,b44-2662-a,\\PRINTSRV10該編碼可以用各種方式來執(zhí)行。在一種情況下,構(gòu)造或變更上行流命令,使得它自動編碼其輸出。在另一情況下,外殼接收輸出然后編碼該輸出。
在眾多情況中,命令行外殼諸如通過將命令行分成每一命令的進程,然后在運作以管理這些進程,來管理命令行中的命令。例如,外殼可將每一上行流命令的輸出發(fā)送給隨后的下行流作為輸入。
對所示出的實施例,假定由上行流命令對輸出進行編碼以包含以上前同步碼。該前同步碼包含以數(shù)字符號“#”開頭的四行。這些行中的每一行包含關(guān)于數(shù)據(jù)的信息,盡管可能不必要包含輸出數(shù)據(jù)本身。前同步碼的第一行包含數(shù)字符號,隨后是大于符號和空格(“#>”)。這一三字符句法向輸出的讀程序指示,該行中的下一信息指示輸出的數(shù)據(jù)類型。因此,在此所示出示例中,隨后的字符“CSV”指示輸出是逗號分隔值類型的。其它三行也可指示關(guān)于數(shù)據(jù)的附加信息。第二行是#ColumnNames:
Location,Name,PrinterState,PrinterStatus,ShareName,SystemName該行指示CSV數(shù)據(jù)的結(jié)構(gòu)是這樣的,第一欄是打印機的位置,第二欄是打印機名稱,第三欄是打印機的狀態(tài),第四欄是打印機的狀況,第五欄是打印機的共享名,第六欄是打印機的系統(tǒng)名。查看輸出的第一行,顯示如下USA/REDMOND,WA/40/FLOOR2/2015,\\PRINTSRV10\b40-2015-a,0,3,b40-2015-a,\\PRINTSRV10因此,第一列出的打印機的位置(它在第一行的第一欄中)是“USA/REDMOND,WA/40/FLOOR2/2015”。名稱為“PRINTSRV10\b40-2015-a”。該打印機的狀態(tài)為“0”,狀況為“3”而共享名為“b40-2015-a”。最后,該打印機的系統(tǒng)名為“PRINTSRV10”。
四行中的第三行為#ColumnTypes:String,String,int,int,String,String該行指示鍵入欄中的字符是串還是整數(shù)。在確定如何處理這些數(shù)據(jù)時這是有用的,這也是關(guān)于上行流命令的輸出的信息的另一示例。查看輸出的第一行,顯示如下USA/REDMOND,WA/40/FLOOR2/2015,\\PRINTSRV10\b40-2015-a,0,3,b40-2015-a,\\PRINTSRV10
該欄含有如前同步碼中所指示的,分被對欄一至六以串、串、整數(shù)、整數(shù)、串、串類型填入的字符。
第四行為數(shù)字符號之后的空白欄,然而,在某些實施例中,它可包含附加信息。第五行為空白,且沒有以數(shù)字符號字符開始。這指示下一行為數(shù)據(jù),而不是關(guān)于該數(shù)據(jù)的信息。
在框206處,該方法確定經(jīng)編碼的數(shù)據(jù)的數(shù)據(jù)類型。例如,在某些實施例中,接收數(shù)據(jù)和/或外殼的下行流命令可確定經(jīng)編碼數(shù)據(jù)的數(shù)據(jù)類型,諸如其編碼模式。此處,通過讀取經(jīng)編碼數(shù)據(jù)的前同步碼的第一行來確定數(shù)據(jù)類型。該行指示數(shù)據(jù)的數(shù)據(jù)類型是CSV。也可以讀取其它信息來確定關(guān)于輸出的額外信息,這里是關(guān)于每一欄中有什么信息,以及在這些欄中的字符的類型。
繼續(xù)所示的實施例,下行流命令和/或外殼現(xiàn)在了解了要被發(fā)送給下行流命令作為輸入的數(shù)據(jù)的數(shù)據(jù)類型。
在框208處,確定下行流命令的可接受數(shù)據(jù)類型。在某些情況下,這是固有地完成的,諸如當(dāng)下行流命令從上行流命令接收到數(shù)據(jù)并將數(shù)據(jù)類型與它所接受的數(shù)據(jù)類型進行比較。外殼也可以諸如通過將下行流命令與列出對命令的輸入的可接受類型的數(shù)據(jù)庫進行比較來確定這點。
如果下行流命令可接受上行流命令輸出的數(shù)據(jù)類型,那么下行流命令在框212處接收數(shù)據(jù)并執(zhí)行。這是由沿判定框210至框212的“是”路徑顯示的。如果下行流命令不可接受此數(shù)據(jù)類型,那么外殼或下行流命令沿著至框214的“否”路徑前進,或者在某些情況下,跳過框214前進至框216。
在一個實施例中,外殼可以在框216處確定是否有可將上行流數(shù)據(jù)的數(shù)據(jù)類型轉(zhuǎn)換為由下行流命令可訪問的類型的轉(zhuǎn)換器可用,并在框218處調(diào)用該轉(zhuǎn)換器,從而從框210跳至框216。或者,如果沒有可用的轉(zhuǎn)換器,那么可以在框220處產(chǎn)生出錯消息。當(dāng)調(diào)用轉(zhuǎn)換器時,外殼可將上行流命令的輸出傳遞給轉(zhuǎn)換器作為輸入,且采用轉(zhuǎn)換器的輸出并將其傳遞給下行流命令。
也可使用可由下行流命令構(gòu)建的名稱或指示符來調(diào)用轉(zhuǎn)換器。例如,下行流命令可采用前同步碼中的數(shù)據(jù)類型的名稱,諸如“CSV”,并構(gòu)建使用該數(shù)據(jù)類型名稱以及轉(zhuǎn)換器可接受的類型的名稱來調(diào)用該轉(zhuǎn)換器的命令。
在所示出的實施例中,下行流命令確定上行流命令的數(shù)據(jù)是CSV格式的輸出。也知道下行流命令可以接受ASN.1或XML。因此,可以在框214處構(gòu)建以下任一的命令$ CONVERT CSV TO XML或$ CONVERT CSV TO ASN.1它可以遵循用于構(gòu)建該轉(zhuǎn)換器名稱的特定約定,使得該轉(zhuǎn)換器能將這些名稱匹配。在該情況下,此約定以“CONVERT”開始,隨后使用空格“”,然后是要轉(zhuǎn)換的類型的名稱“CSV”,隨后是空格“”,然后是“TO”,然后是空格“”,然后是所期望的類型的名稱“XML”或“ASN.1”。
下行流命令或外殼可以在框216處確定這些轉(zhuǎn)換器中的任一個是否可用。如果其中之一可用,那么下行流命令如上所述沿著“是”路徑前進至框218來調(diào)用轉(zhuǎn)換器。如果均不可用,那么下行流命令或外殼沿著“否”路徑前進至框220。
繼續(xù)所示的實施例,外殼或下行流命令確定圖1的CSV-XML轉(zhuǎn)換器122可用。然后在框218處調(diào)用該轉(zhuǎn)換器。其被轉(zhuǎn)換數(shù)據(jù)的輸出被發(fā)送給下行流命令(圖1的pause printer命令120)。
在某些情況下,上行流命令輸出的已編碼部分中的信息可能有助于正確和/或有效地轉(zhuǎn)換輸出。如上所述,前同步碼可包含此類附加信息。轉(zhuǎn)換器可使用該信息將數(shù)據(jù)轉(zhuǎn)換成下一下行流命令可接受的形式。例如,當(dāng)將數(shù)據(jù)從CSV轉(zhuǎn)換成XML,它可能有助于了解何處有什么數(shù)據(jù)以及其中字符的格式。例如,如果按照每一打印機的位置、名稱、狀態(tài)、狀況、共享名和系統(tǒng)名來排列XML輸出,那么經(jīng)編碼的信息可用于排列來自上行流命令的數(shù)據(jù)以適合特定的結(jié)構(gòu)。
該信息也可有助于協(xié)助解析輸出以定位上行流命令輸出的各部分,尤其是在僅有一部分輸出數(shù)據(jù)被傳遞給下行流命令的情況下。在這樣的情況下,附加的已編碼信息可允許更有效和/或準(zhǔn)確地解析上行流命令的輸出。
在當(dāng)前的說明中,上行流命令輸出具有系統(tǒng)名“PRINTSRV10”的六臺打印機。如果下行流命令是接收該打印機的共享名,那么前同步碼的第二和第三行中的信息可用于容易地找出該共享名。上行流命令的經(jīng)編碼的輸出的第二和第三行為#ColumnNames:
Location,Name,PrinterState,PrinterStatus,ShareName,SystemName#ColumnTypes:String,String,int,int,String,String
基于該編碼,轉(zhuǎn)換器然后可以確定第五欄包含所期望的共享名,而該欄的各字符將是字符串。
如果該命令行的操作完成,如同所示實施例中的情況一樣,那么該進程結(jié)束。如果下行流命令的輸出將由另一個、進一步的下行流命令使用,那么該進程可以重復(fù),或接著進行進程300。
回到進程200,在沒有轉(zhuǎn)換器可用的情況下,下行流命令(具有或不具有命令行界面或命令行外殼)在框220處產(chǎn)生出錯消息,指示需要轉(zhuǎn)換器來完成由用戶輸入的命令行。在某些情況下,該消息可指示因特網(wǎng)上可下載轉(zhuǎn)換器之處。
編碼和轉(zhuǎn)換協(xié)議;內(nèi)部調(diào)用的轉(zhuǎn)換在某些情況下,用戶可能希望在命令行本身內(nèi)調(diào)用轉(zhuǎn)換器。通過這樣做,可以跳過進程200的某些動作。
在一個實施例中,接收具有以下句法的命令行$ GET-PRINTER-SystemName PRINTSRV10-OutputFormatCSV|CONVERT-CSV-TO-XML|PAUSE-PRINTER此處,上行流命令的輸出為CSV,盡管在此情形中,用戶請求以CSV格式輸出。上行流命令的命令下行流為“CONVERT-CSV-TO-XML”,這在圖1中的122處顯示。
在該進程中,用戶選擇轉(zhuǎn)換器,因此可能了解最終的下行流命令(pause printer120)接受XML數(shù)據(jù)。此處,外殼操作以將CSV格式的上行流命令的輸出傳遞給轉(zhuǎn)換器122作為CSV格式的輸入。外殼然后可以將下行流轉(zhuǎn)換器的輸出傳遞給pause printer命令120作為XML格式的輸入。
如前所述,上行流命令數(shù)據(jù)流的已編碼部分中的信息可有助于轉(zhuǎn)換器轉(zhuǎn)換輸出。在此以及其它情況中,可以通過選擇以結(jié)構(gòu)化的格式(如CSV)輸出數(shù)據(jù)來避免對文本格式的輸出的有時困難且通常易于出錯的解析。
允許命令行通過檢測/指導(dǎo)來自動操作進程300允許含有上行流命令和下行流命令的命令行的操作。它可使得能夠通過自動檢測和指導(dǎo)能夠由上行流命令輸出的、可由下行流命令接受的數(shù)據(jù)類型來進行命令行的操作。在某些情況下,這可以無需編碼上行流命令輸出來執(zhí)行。進程300被示為表示由諸如命令行外殼110和轉(zhuǎn)換器114等計算設(shè)備元件執(zhí)行的各個操作或動作的一連串框。
在框302處,該進程接收命令行。該命令行可以從用戶處接收,且可以被類似地構(gòu)造成描述為圖2的框202的部分。
在框304處,命令行外殼110確定可由上行流命令輸出的數(shù)據(jù)類型。在所示的實施例中,接收命令行$ GET-PRINTER-SystemName PRINTSRV10|CONFIGURE-PRINTER如在關(guān)于圖1的描述中所述,get printer命令116能夠以文本和CSV類型接受和輸出數(shù)據(jù)。在框304處,命令行外殼確定這一點。
在框306處,外殼確定輸入數(shù)據(jù)類型可被下行流命令接受。繼續(xù)示出的實施例,外殼確定configure printer命令118能夠接受和輸出CSV和XML數(shù)據(jù)類型。
在框308處,外殼確定上行流命令的輸出類型中的任一種是否是作為對下行流命令的輸入可接受的類型。如果是,那么外殼沿著“是”路徑至框310。如果否,那么外殼沿著“否”路徑至框312。
在框310處,外殼指導(dǎo)上行流命令以下行流命令可讀的格式輸出數(shù)據(jù)。通過這樣做,外殼可自動允許其中上行流命令的輸出可能不能由下行流命令讀取的命令行的操作。例如,如果get printer的上行流命令默認(rèn)輸出文本格式的數(shù)據(jù),外殼將允許在其它情況下會失敗的命令行操作。
在示出的實施例中,外殼將所接收的命令行改為$ GET-PRINTER-SystemName PRINTSRV10-OutputFormatCSV|CONFIGURE-PRINTER在框312處,外殼指導(dǎo)上行流命令以可轉(zhuǎn)換為下行流命令可讀的格式的格式輸出數(shù)據(jù)。
假定在框302處接收的命令行改為$ GET-PRINTER-SystemName PRINTSRV10|PAUSE-PRINTER回到框304、306和308,該實施例中的外殼確定上行流命令的輸出中沒有一個可以是下行流命令可接受的數(shù)據(jù)類型。如上所述,get printer命令116能夠以文本或CSV格式輸出數(shù)據(jù),pause printer命令120能夠以ASN.1或XML格式接受數(shù)據(jù)。
然后在框312處,外殼指導(dǎo)上行流命令以可轉(zhuǎn)換成下行流命令可讀的格式的格式輸出數(shù)據(jù)?;趫D1中所示的轉(zhuǎn)換器CSV-XML轉(zhuǎn)換器122的可用性,外殼指導(dǎo)上行流命令以CSV格式輸出數(shù)據(jù)。
在框314處,外殼調(diào)用適當(dāng)?shù)霓D(zhuǎn)換器。繼續(xù)所示的實施例,外殼調(diào)用CSV-XML轉(zhuǎn)換器來將CSV輸出轉(zhuǎn)換成XML。外殼(或另一應(yīng)用程序)可以不必更改命令行而這樣做,或可以改為更改命令行,諸如通過將命令行改為$ GET-PRINTER-SystemName PRINTSRV10-OutputFormatCSV|CONVERT-CSV-TO-XML|PAUSE-PRINTER在一個替換實施例中,上行流命令的輸出被編碼以允許CSV-XML轉(zhuǎn)換以可能更高的準(zhǔn)確性操作和/或在使輸出可以更容易或準(zhǔn)確被解析的情況下操作。該編碼可以按上述任何方式執(zhí)行。
在框316處,執(zhí)行下行流命令。在所示的實施例中,找到和暫?;蛘业胶团渲么蛴C。
進程200或300或其替換實施方式的動作可被多次執(zhí)行。假定接收含有以下命令的命令行$ A|B|C|D|E此處,命令為A、B、C、D和E。命令A(yù)是命令B的上行流,B是C的上行流,依此類推。該工具可允許命令行操作,諸如以從A到D生成的前導(dǎo)數(shù)據(jù)來執(zhí)行命令E的所期望的結(jié)果。該工具甚至在這樣的情景中也能這樣做A的默認(rèn)值是B不可接受的輸出類型,但其中該工具指導(dǎo)A以B可接受的類型輸出數(shù)據(jù);B輸出可轉(zhuǎn)換成C可接受類型的類型,其中該工具調(diào)用B的輸出的編碼,轉(zhuǎn)換該輸出并將其發(fā)送給C;C默認(rèn)輸出D可讀的類型;D向E輸出可轉(zhuǎn)換成E可讀的類型的類型,但其中不執(zhí)行D的輸出的編碼。給出該示例以顯示該工具的靈活性。命令行中的命令的數(shù)量及復(fù)雜性可以幾乎是任意的,且命令行可仍舊使用此處所述的工具來操作。
結(jié)論以上描述的系統(tǒng)和/或方法可用于允許含有上行流命令和下行流命令的命令行的操作,其中上行流命令輸出其類型作為下行流命令的輸入不可接受的數(shù)據(jù)。這些系統(tǒng)和/或方法可以通過編碼和轉(zhuǎn)換協(xié)議或通過一種進程來這樣做,在該進程中,從上行流命令輸出的數(shù)據(jù)類型被自動檢測并被指導(dǎo)成下行流命令可接受的類型。
盡管以結(jié)構(gòu)性特征和/或方法性步驟專用的語言描述了本發(fā)明,但可以理解,在所附權(quán)利要求書中定義的本發(fā)明不必限于所述的具體特征或步驟。相反,這些具體特征和步驟是作為實現(xiàn)所要求保護的本發(fā)明的較佳形式來揭示的。
權(quán)利要求
1.一種或多種其中含有計算機可讀指令的計算機可讀介質(zhì),所述計算機可讀指令在由計算設(shè)備執(zhí)行時使所述計算設(shè)備執(zhí)行以下動作從命令行中的上行流命令接收具有所述命令行中的下行流命令可接受或不可接受的數(shù)據(jù)類型的數(shù)據(jù);確定所述數(shù)據(jù)類型對所述下行流命令是否可接受;以及在所述數(shù)據(jù)類型對所述下行流命令不可接受的情況下,處理所述數(shù)據(jù)以將所述數(shù)據(jù)轉(zhuǎn)換成對所述下行流命令可接受的數(shù)據(jù)類型。
2.如權(quán)利要求1所述的介質(zhì),其特征在于,所述處理數(shù)據(jù)的動作不必解析文本格式的數(shù)據(jù)即可執(zhí)行。
3.如權(quán)利要求1所述的介質(zhì),其特征在于,還包括使用足以允許判斷來自所述上行流命令的數(shù)據(jù)的數(shù)據(jù)類型的標(biāo)簽來編碼所述數(shù)據(jù);以及其中,確定所述數(shù)據(jù)類型是否可接受的動作包括使用所述標(biāo)簽來確定所述數(shù)據(jù)的數(shù)據(jù)類型。
4.如權(quán)利要求1所述的介質(zhì),其特征在于,還包括對來自所述上行流命令的數(shù)據(jù)進行編碼以提供指示所述數(shù)據(jù)的數(shù)據(jù)類型的指示符。
5.如權(quán)利要求4所述的介質(zhì),其特征在于,對來自所述上行流命令的數(shù)據(jù)進行編碼的動作還包括所述指示符之前的引號“#<”內(nèi)的句法。
6.如權(quán)利要求1所述的介質(zhì),其特征在于,還包括從所述命令行中的第二上行流命令接收具有對所述命令行中的第二下行流命令可接受或不可接受的第二數(shù)據(jù)類型的第二數(shù)據(jù);確定所述第二數(shù)據(jù)類型是否對所述第二下行流命令可接受;以及在所述第二數(shù)據(jù)類型對所述第二下行流命令不可接受的情況下,處理所述第二數(shù)據(jù)以將所述第二數(shù)據(jù)轉(zhuǎn)換成對所述第二下行流命令可接受的數(shù)據(jù)類型。
7.如權(quán)利要求1所述的介質(zhì),其特征在于,所述處理數(shù)據(jù)的動作是由調(diào)用轉(zhuǎn)換器的下行流命令啟動的。
8.如權(quán)利要求7所述的介質(zhì),其特征在于,所述調(diào)用轉(zhuǎn)換器的動作包括為所述轉(zhuǎn)換器構(gòu)建轉(zhuǎn)換器名稱,所述轉(zhuǎn)換器名稱是使用在來自所述上行流命令的數(shù)據(jù)中編碼的數(shù)據(jù)類型名稱以及對所述下行流命令可接受的數(shù)據(jù)類型的可接受數(shù)據(jù)類型名稱來構(gòu)建的。
9.一種方法,包括接收數(shù)據(jù)流中的數(shù)據(jù),所述數(shù)據(jù)流含有足以允許判斷所述數(shù)據(jù)的數(shù)據(jù)類型的標(biāo)簽;使用所述標(biāo)簽來確定所述數(shù)據(jù)的數(shù)據(jù)類型;確定作為對命令的輸入可接受的另一數(shù)據(jù)類型;以及將所述數(shù)據(jù)流中的數(shù)據(jù)從所述數(shù)據(jù)的數(shù)據(jù)類型轉(zhuǎn)換成作為所述對命令的輸入可接受的另一數(shù)據(jù)類型。
10.如權(quán)利要求9所述的方法,其特征在于,所述命令是對所述命令行的上行流命令的下行流,所述接收數(shù)據(jù)流中的數(shù)據(jù)的動作包括接收來自所述上行流命令的數(shù)據(jù)。
11.如權(quán)利要求9所述的方法,其特征在于,所述標(biāo)簽由命令行外殼編碼至所述數(shù)據(jù)流內(nèi)。
12.如權(quán)利要求9所述的方法,其特征在于,確定所述數(shù)據(jù)的數(shù)據(jù)類型的動作是由所述命令執(zhí)行的。
13.如權(quán)利要求9所述的方法,其特征在于,確定作為對所述命令的輸入可接受的另一數(shù)據(jù)類型的動作是由命令行外殼執(zhí)行的。
14.如權(quán)利要求9所述的方法,其特征在于,所述轉(zhuǎn)換數(shù)據(jù)的動作包括調(diào)用能夠?qū)⑺鰯?shù)據(jù)的數(shù)據(jù)類型轉(zhuǎn)換成被確定為作為對所述命令的輸入可接受的另一數(shù)據(jù)類型的轉(zhuǎn)換器。
15.如權(quán)利要求9所述的方法,其特征在于,所述標(biāo)簽包括含有四行或更多行的數(shù)據(jù)的前同步碼,第一行以引號“#<”內(nèi)的句法開始。
16.如權(quán)利要求9所述的方法,其特征在于,所述標(biāo)簽包含除指示所述數(shù)據(jù)的數(shù)據(jù)類型以外,還指示格式化所述數(shù)據(jù)流中的數(shù)據(jù)的模式的信息。
17.如權(quán)利要求9所述的方法,其特征在于,還包括為同一命令行中的另一數(shù)據(jù)流和另一命令再次執(zhí)行所述動作。
18.一種或多種其中含有計算機可讀指令的計算機可讀介質(zhì),所述計算機可讀指令在由計算設(shè)備執(zhí)行時使所述計算設(shè)備執(zhí)行以下動作檢測能夠由命令行中的上行流命令輸出的一個或多個數(shù)據(jù)類型;檢測作為對所述命令行中的下行流命令的輸入可接受的一個或多個數(shù)據(jù)類型;如果能夠被輸出的所述一個或多個數(shù)據(jù)類型之一是作為對所述下行流命令的輸入可接受的數(shù)據(jù)類型,那么指導(dǎo)所述上行流命令輸出所述數(shù)據(jù)類型的數(shù)據(jù)。
19.如權(quán)利要求18所述的介質(zhì),其特征在于,還包括,如果能被輸出的所述數(shù)據(jù)類型中沒有一個作為對所述下行流命令的輸入是可接受的,那么調(diào)用轉(zhuǎn)換器以將由所述上行流命令輸出的數(shù)據(jù)從能由上行流命令輸出的一個或多個數(shù)據(jù)類型之一轉(zhuǎn)換成作為輸入可接受的一個或多個數(shù)據(jù)類型之一。
20.如權(quán)利要求18所述的介質(zhì),其特征在于,檢測能被輸出的所述一個或多個數(shù)據(jù)類型以及指導(dǎo)所述上行流命令的動作是由命令行外殼執(zhí)行的。
全文摘要
呈現(xiàn)了可用于允許含有上行流命令和下行流命令的命令行的操作的系統(tǒng)和/或方法,其中上行流命令可輸出其類型作為對下行流命令的輸入可能不可接受的數(shù)據(jù)。
文檔編號G06F17/30GK1828591SQ20061000431
公開日2006年9月6日 申請日期2006年2月6日 優(yōu)先權(quán)日2005年3月4日
發(fā)明者H·雷甘德希, J·D·瓊斯, J·P·斯諾弗 申請人:微軟公司