亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > BAT > 正文

Windows cmd命令行輸入輸出重定向問題

2020-07-26 19:47:49
字體:
來源:轉載
供稿:網友

最近學校的網比較搓,DNS天天掛,出口帶寬天天堵,NAT后的總出口帶寬也才4MB/s(來源:360測速),唉,不親身體會鬼才知道一堆人共享這個帶寬是什么感覺。
廢話不多說了,在Unix下重定向用著感覺很high,現在想把win下的nslookup的錯誤提示“*** Can't find server name for address 10.3.9.5: Non-existent domain”一同導出到txt文件,搜了下,嗯,遂有此文。
再說句廢話,windows這是赤裸裸的抄襲啊,stdio(0),stdout(1),stderr(2)都跟unix是一樣的

重定向符號主要有:>,>>,<,>&,<&和|,以下只有前五個的介紹,最后一個是管道,與Unix亦完全一致。

第一節

首先從一個經典問題開始,“1>nul 2>nul”的意思是既屏蔽正常的輸出又屏蔽錯誤的輸出,那么我們馬上就知道了這里的1表示正常輸出(即所謂的“標準輸出”--stdout),2表示錯誤輸出(即所謂的“標準錯誤輸出”--stderr)。

1和2其實是句柄stdout和stderr的數字代號,至于什么是句柄,我認為可以理解為某種事物的一種標識,或者說這個句柄指向某個事物。舉個例子來說,“標準輸出”以句柄stdout為標識,或者說句柄stdout指向“標準輸出”。
還有一個句柄--stdin,它是所謂“標準輸入”的標識,數字代號是0。除此之外還有3~9可用,只是它們沒有定義。

“標準輸出”和“標準錯誤輸出”默認是要輸出到控制臺con(即cmd窗口)的,而“標準輸入”默認是由控制臺con(即鍵盤)輸入的,因此重定向的目的就是將輸入輸出流從默認位置重定向到新的位置。符號“>”和“>>”的默認句柄代號是1,而“<”的默認句柄代號是0。

“echo hhhhhh”類似于這樣的語句可以說是我們再熟悉不過的了,但這只是種默認的狀態,其實里面還有一些內容。這一句完整的應該是這樣的:“echo hhhhhh 1>con 2>con”,意思是將echo命令的結果中的標準輸出和標準錯誤輸出輸出到控制臺con中,只不過此時標準錯誤輸出是空的。

再看一個例子,如果給dir一個錯誤的參數,例如“dir /mm”,那么寫全了就是“dir /mm 1>con 2>con”,只不過此時的標準輸出是空的。如果你這樣寫的話“dir /mm 1>hero.txt”,那么屏幕上會照常顯示錯誤信息但hero.txt中不會有內容。

再來一個標準輸入的例子,“set /p var= ”其實應該是這樣的“set /p var= 0<con”,只是因為0<con是默認值可以省略。我們當然可以從文件中讀取輸入,如“set /p var= 0<file.txt”,0是默認值可以省略。

nul代表的是“空設備”,是一個不存在的設備,將輸出流重定向到空設備就相當于屏蔽掉了一樣。而如果從空設備中讀取輸入,自然是讀不到東西的,但的確是輸入了,這也就是“set /p var=<nul”中“<nul”相當于回車但不換行的原因。

第二節

下面要講的是句柄代碼之間的“重定向”。 之前不是提到過還有3~9這7個句柄數字代號嗎,這些究竟有什么用?說實話,基本沒什么用,因此建議你如果不是迫切想知道這部分內容的話就不要往下看了。

“echo hero 1>hero.txt”這一句是將標準輸出重定向到文件hero.txt,相當于將句柄代號1的指向由con變為hero.txt?!癳cho hero 3>hero.txt 1<&3”,這句的結果是生成了文件hero.txt,其內容為hero,過程是這樣的:“3>hero.txt”是將句柄數字代號 3的指向由“空”變為hero.txt;“1<&3”是將句柄數字代號3的指向復制給1的指向,此時1的指向就為hero.txt了,因此標準輸出就被重定向到hero.txt中了。

“i<&j”和“i>&j”的效果都是把j的指向復制給i?!癳cho hero >hero.txt 2>&1”這句的意思是,無論是標準輸出還是標準錯誤輸出都會被重定向到hero.txt中,具體過程:1的指向由con轉為 hero.txt,“2>&1”是把1的指向復制給2,此時2的指向也變為了hero.txt,因此1和2都會被重定向到hero.txt 中。注意:1是符號“>”的默認句柄數字代號。

再看“echo hero 3>hero.txt”,這個為什么就不能將結果重定向到文件中呢?記住,我們要重定向的只有標準輸入、標準輸出和標準錯誤輸出,因此真正“干活” 的就只有0、1和2,因為它們分別指代了前面的三者,而3沒有指代任何句柄只能作為間接量使用。

“more 3<hero.txt 0>&3”這句是顯示文件hero.txt,具體過程:“3<hero.txt”把3的指向變為 hero.txt,“0>&3”把3的指向復制給0,即0指向了hero.txt(只不過這次是從hero.txt中讀取數據)。強調一下,真正能讀取數據的是0而不是3,3只是作為中間量而已。剛才這句我們當然可以這么寫:“more 0<hero.txt”或直接“more <hero.txt”。

再來一個例子“echo hero 5>hero.txt 4>&5 3<&4 1<&3”,結果輸出到了hero.txt中。具體過程:5的指向變成hero.txt,“4>&5”把5的指向復制給 4,“3>&4”把4的指向復制給3,“1>&3”把3的指向復制給1,最終1的指向就是hero.txt,則1所指代的標準輸出就被重定向到了hero.txt。

第三節

注意:這一節的內容都是圍繞著下面這個例子進行敘述的。

代碼:

@echo offecho 英雄是好男人!??!echo 1>nul 3>nulecho 英雄是echo 英雄是echo 這是怎么回事,難道就不能 1>con 4>conpause

這究竟是怎么回事?為什么結果會如此出乎意料?
這里涉及到一個所謂“備份”的問題,就是在修改某個句柄代號的指向之前,系統會把該句柄代號原來的指向備份到截止到目前第一個指向為空的句柄代號中。目的是當這一行的程序結束之后,系統可以通過備份找回原來的指向。

( 在繼續閱讀之前建議你準備好紙筆,以便能記錄下各個代號指向的變化,這樣不至于混亂)
我們現在把焦點集中到這句“echo. 1>nul 3>nul”上來。這句究竟是如何工作的呢?

第一步:在運行“1>nul”之前,1的指向是默認值con,此時代號3~9的指向都是空(初始值),因此系統會把1的指向備份到3(因為3是第一個為空的代號),3就指向了con。就是說系統把1原來的指向復制給了3,目的是語句結束后能找回原來的指向,這就相當于備份。

第二步:現在3的指向是con。然而由于要運行“3>nul”,因此還要備份3的指向。此時4是空的,系統就把3的指向con復制給了4,即4現在指向con。就是說3以4為備份。

第三步:由于“3>nul”使得3指向了nul。

第四步:這行語句結束時,1要找回原來的指向,從以上敘述我們知道,3是1的備份,因此1要通過3來恢復“原來”的指向,但此時3的指向已經變為了nul,故1就指向nul。

第五步:而3要恢復原來的指向就要找4,4指向con,故3恢復為con;4原始指向是空的,其備份在5中,故4的指向恢復到空。

至此我們理順一下,現在1指向nul,2指向默認值con,3指向con,4之后都是空指向。那么在運行后兩句echo語句時由于1指向nul,即標準輸出被重定向到空設備,故顯示被屏蔽。

再來看看這句 “echo 這是怎么回事,難道就不能 1>con 4>con” 這句是怎么工作的呢?

第一步:1當前指向是nul,由于要運行“1>con”,因此要進行備份。但此時3指向的是con非空,故系統將1的指向備份到4,即4指向nul。

第二步:又由于要運行“4>con”,故4現在的指向nul就又被備份到5中,5以后的事姑且省略。
第三步:運行完“4>con”之后4就指向con。
第四步:該行程序結束后,1要通過4來恢復指向。4指向con,故1指向con從而恢復了默認狀態。而4找5,5指向nul,故4指向nul。
我們再數一數現在的情況,0指向con,1指向con,2指向con,3沒動還是指向con,4指向nul,5以后都為空指向。
會不會有點亂?那就再好好的看幾遍吧,或者是看看這篇,講的更基礎一些:

第四節
我們已經知道“echo hero”相當于“echo hero 1>con 2>con”,con表示控制臺,可以把con看做是特殊的文件,這就是我們無法建立名為con文件的原因。

再對“>”和“>>”的重定向機制做個分析。當要重定向到的文件有隱藏或系統屬性時,“>>”可以正常運行,而 “>”就無法操作了。據此我推測,對于“>”的重定向輸出,如果文件不存在當然是建立文件,而如果文件存在就先將文件刪除,然后再新建文件,也就是說并非是覆蓋文件的內容而是先刪除文件再建立新文件。

通過第三節的講解你應該明白為什么類似這樣的語句“echo hero >nul >con >hero.txt >con”會以最后一個為準了吧。

最后需要注意一點的是--重定向輸出無法輸出到只讀文件。

完。
WIN下的大部分重定向與Unix還是一致的,嗯

下面是補充

Windows下cmd標準輸入輸出重定向

Command 功能
command > filename 把標準輸出重定向到一個文件中
command >> filename 把標準輸出重定向到一個文件中(追加)
command 1 > fielname 把標準輸出重定向到一個文件中
command > filename 2>&1 把標準輸出和標準錯誤一起重定向到一個文件
command 2 > filename 把標準錯誤重定向到一個文件中
command 2 >> filename 把標準錯誤重定向到一個文件中(追加)
command >> filename 2>&1 把標準輸出和標準錯誤一起重定向到一個文件中(追加)
command < filename1 > filename2 command命令以filename1文件作為標準輸入,以filename2文件作為標準輸出
command < filename command命令以filename文件作為標準輸入
command << delimiter 從標準輸入中讀入,直至遇到delimiter分界符
command < &m 將文件描述符m作為標準輸入
command > &m 將標準輸出重定向到文件描述符m中
command < &- 關閉標準輸入

以上就是Windows cmd命令行輸入輸出重定向問題的詳細內容,更多關于cmd命令行輸入輸出重定向的資料請關注武林網其它相關文章!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美又大粗又爽又黄大片视频| 成人激情免费在线| 精品国产1区2区| 国产精品jizz在线观看麻豆| 欧美成人免费大片| 亚洲性69xxxbbb| 国产一区二区三区视频在线观看| 成人免费视频在线观看超级碰| 日产精品99久久久久久| 亚洲国产美女久久久久| 日韩av中文字幕在线| 欧美日韩一区二区三区在线免费观看| 日韩av一卡二卡| 热久久视久久精品18亚洲精品| 色综久久综合桃花网| 国产中文字幕91| 亚洲娇小xxxx欧美娇小| 日韩电影中文字幕av| 久久伊人精品天天| 国产精品福利观看| 欧美高清视频在线播放| 在线免费观看羞羞视频一区二区| 亚洲黄色av女优在线观看| 久久黄色av网站| 青青草99啪国产免费| 91在线高清免费观看| 欧美日韩美女在线观看| 国产精品一区二区av影院萌芽| 91国偷自产一区二区三区的观看方式| 午夜精品一区二区三区在线播放| 国产欧美日韩免费看aⅴ视频| 日韩美女在线观看一区| 亚洲国产成人在线播放| 亚洲欧美综合v| 亚洲跨种族黑人xxx| 欧美成人亚洲成人日韩成人| 欧美疯狂xxxx大交乱88av| 国产精品女主播| 亚洲第一区在线观看| 欧美亚洲一区在线| 精品国产一区二区在线| 尤物精品国产第一福利三区| 亚洲成人av在线播放| 国产精品久久久久久久午夜| 日韩av电影免费观看高清| 亚洲成人av在线| 91高清视频免费观看| 2020国产精品视频| 亚洲精品乱码久久久久久金桔影视| 亚洲国产精品美女| 欧美成人免费网| 亚洲成人精品在线| 日韩精品一二三四区| 日韩国产一区三区| 亚洲欧美国产高清va在线播| 亚洲精品福利视频| 精品女同一区二区三区在线播放| 色妞一区二区三区| 97**国产露脸精品国产| 欧美日韩一区免费| 亚洲国产日韩欧美在线动漫| 国产91在线播放| 国产亚洲精品高潮| 91免费看片网站| 欧美久久精品午夜青青大伊人| 国产www精品| 国语自产在线不卡| 激情亚洲一区二区三区四区| 国自产精品手机在线观看视频| 欧美一区二区.| 国产成人久久久精品一区| 日韩av网址在线| 欧美性高潮床叫视频| 亚洲国产高清高潮精品美女| 亚洲精品999| 亚洲色图15p| 亚洲第一网站免费视频| 日韩电视剧在线观看免费网站| 91欧美激情另类亚洲| 成人伊人精品色xxxx视频| 成人xvideos免费视频| 91网站免费看| 欧美伊久线香蕉线新在线| 亚洲性猛交xxxxwww| 成人观看高清在线观看免费| 欧美猛男性生活免费| 国产噜噜噜噜噜久久久久久久久| 久久久国产一区| 不卡av电影院| 精品夜色国产国偷在线| 欧美日韩在线第一页| 欧美尤物巨大精品爽| 91九色视频在线| 国产精品久久久久久久7电影| 精品国内自产拍在线观看| 91中文在线视频| 欧美极品少妇xxxxⅹ喷水| 538国产精品一区二区在线| 欧美大秀在线观看| 亚洲欧美日韩在线一区| 95av在线视频| 国产一区二区三区日韩欧美| 国产精品99久久久久久久久| 亚洲综合中文字幕在线| 日韩精品免费观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 97人人模人人爽人人喊中文字| 日韩在线视频观看| 欧美三级xxx| 欧美在线视频免费| 日韩亚洲欧美中文在线| 中文欧美日本在线资源| 亚洲自拍在线观看| 一区二区三区久久精品| 欧美孕妇与黑人孕交| 国产美女扒开尿口久久久| 91在线视频精品| 亚洲精品白浆高清久久久久久| 2019最新中文字幕| 国模视频一区二区| 日韩免费av一区二区| 中文字幕亚洲精品| 黑人与娇小精品av专区| 欧美激情国产精品| 精品国产一区二区三区久久| 成人综合国产精品| 中国日韩欧美久久久久久久久| 国产精品久久久久久久久久小说| 国产欧美日韩最新| 亚洲第一区中文字幕| 国产亚洲视频中文字幕视频| 精品国产91乱高清在线观看| 成人激情视频小说免费下载| 美女性感视频久久久| 久久这里有精品视频| 亚洲第一网站男人都懂| 91色琪琪电影亚洲精品久久| 国产精品美女久久久免费| 91香蕉电影院| 日韩中文字幕第一页| 国产精品久久久久久久久男| 国产91精品最新在线播放| 欧美人与性动交a欧美精品| 尤物yw午夜国产精品视频明星| 欧美精品久久一区二区| 久久精品视频在线播放| 一区二区三区回区在观看免费视频| 97在线精品国自产拍中文| 久久精品亚洲国产| 尤物九九久久国产精品的特点| 日韩av免费一区| 久久免费视频这里只有精品| 粗暴蹂躏中文一区二区三区| 另类少妇人与禽zozz0性伦| 日韩免费高清在线观看| 国产成人拍精品视频午夜网站| 国产精品成人av在线| 成人免费淫片aa视频免费| 久久久久北条麻妃免费看| 97超级碰在线看视频免费在线看| 97精品久久久中文字幕免费| 北条麻妃99精品青青久久| 日韩激情第一页| 欧美性精品220|