您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關cmd批處理nul的使用示例的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
cmd批處理 nul 部分用法
用法1:2>nul
2>nul 是屏蔽操作失敗顯示的信息,如果成功依舊顯示。
如:在批處理文件所在路徑下md(或者mkdir)創建名為test的文件夾,當此文件夾已經創建時會報錯。使用2>nul 可屏蔽此提示
md test 2>nul
用法2:>nul (即1>nul)
>nul 是屏蔽操作成功顯示的信息,但是出錯還是會顯示(即1>nul)
@符號是取消本行的輸入顯示
如:
例1:ping 一個IP地址。cmd中將首先顯示,輸入情況,c:\user\administrator\ ping 192.168.1.1 無論能不能ping通,界面一般會輸出連續輸出4行ping的情況。
@echo off
ping 192.168.1.1
pause
例2:在語句前加上@,不再顯示輸入情況。直接顯示ping輸出結果
@echo off
@ping 192.168.1.1
pause
例3:在語句末加上>nul,不再顯示輸出結果,由于添加了@,輸入情況也不會顯示。
@echo off
@ping192.168.1.1 >nul
pause
用法3:>nul 2>nul (即1>nul)
屏蔽所有輸出語句顯示,無論成功或失敗界面均不再提示
關于"1>” "2>" "2>&1" 的具體意思
標準輸入(standard input)的文件描述符是 0
標準輸出(standard output)是 1
標準錯誤(standard error)是 2>和>>都是重定向輸出(>是覆蓋,>>是追加)
1> 指標準信息輸出路徑(也就是默認的輸出方式)
2> 指錯誤信息輸出路徑
2>&1 指將標準信息輸出路徑指定為錯誤信息輸出路徑(也就是都輸出在一起)
補充問題4<&0:
<和<<都是重定向輸入
<0指標準輸入路徑
4<&0 指的是將文件描述符4指定為標準輸入(實際可選4到9之間任意一個數字)
grep "standard"* > grep.out 2>&1
將包含"standard" 的行全部寫入grep.out文件中,包括grep時發生錯誤的報錯信息
del abc.txt>nul 2>nul
這個">nul 2>nul"可以屏蔽一切屏幕的輸出可以這樣理解:
假如執行一個命令,但是不想在屏幕里看到這個命令的執行情況,可以使用"[命令]>nul"就可以屏蔽命令在屏幕上的輸出,但是有的命令執行會出錯,即使用了">nul"也不能屏蔽命令產生的信息,所以就在后面加" 2>nul"這個,就是"[命令]>nul+空格+2>nul",這樣,不管命令是否正確的運行,都不會在屏幕看到這個命令所產生的屏幕顯示了。
用"dir"命令可以顯示當前目錄的文件及文件夾列表,這時如果用"dir>nul",就看不見dir命令執行的屏幕輸出了,那么再鍵入"dirr"時會顯示" 'dirr' 不是內部命令,也不是外部命令,也不是批處理文件。",這時如果用"dirr>nul"來屏蔽這個錯誤,因為依然會出現" 'dirr' 不是內部命令,也不是外部命令,也不是批處理文件。"這個錯誤提示,這時如果用"dirr>nul 2>nul"的話,就在屏幕上看不到上面的出錯提示了
批處理中的****1>nul 2>nul是什么意思?
1>nul 意思是不顯示命令運行的正確提示
2>nul 是不顯示錯誤提示
一起就是 正確錯誤的都不顯示
>是重定向符號
nul是空設備的意思
把提示輸入到空設備就不顯示了
重定向你可以理解為 輸入到 的意思
實例:
@taskkill /im 1.exe /f /t >nul 2>&1
經常看到“>nul 2>nul”是什么意思?
功能就是不管前面的命令要顯示什么信息都屏蔽掉,即不顯示。
2>nul 簡析
2>nul的2指錯誤輸出句柄,2>nul表示將執行的錯誤結果輸出到空設備nul,也就是不輸出錯誤結果。
例如。弱智 2>nul 將不顯示'弱智' 不是內部或外部命令,也不是可運行的程序或批處理文件。
就是說>nul 表示成功執行后不回顯,2>nul 表示不成功執行后不回顯
>nul 2>nul 表示不管命令執行成功與否都不回顯
TASKKILL /F /IM a.exe >nul 2>&1講解
把標準輸出流重定向到nul,把標準錯誤流重定向到標準輸出流。
輸出到nul的內容會被直接丟棄,因此效果就是丟棄程序的一切輸出。
2>&1
表示把標準錯誤流重定向到標準輸出流。
關于cmd命令的重定向輸出 2>&1
mycommand >mylog.txt 2>&1 應該是最經典的用法了。
命令的結果可以通過“%>”的形式來定向輸出,%表示文件描述符:1為標準輸出stdout、2為標準錯誤stderr。系統默認%值是1,也就是“1>”,而1>可以簡寫為>,也就是默認為>。stdout的默認目標是終端,stderr的默認目標為也是終端。我們在批處理中執行: echo text >result.txt ,我們就可以在屏幕上會看到 echo text 1>result.txt ,即是這個道理。
其中&需要直接與重定向符號結合使用。
應用實例:
1、將結果輸出到result.txt
net stop myservices >>result 2>&1
2、隱藏程序輸出結果
net stop myservices >nul 2>nul
微軟關于重定向的文章:使用命令重定向操作符
可以使用重定向操作符將命令輸入和輸出數據流從默認位置重定向到其他位置。輸入或輸出數據流的位置稱為句柄。
下表將列出可用的句柄。
句柄 句柄的數字代號 描述
STDIN 0
鍵盤輸入
STDOUT 1
輸出到命令提示符窗口
STDERR 2
錯誤輸出到命令提示符窗口
UNDEFINED 3-9
句柄由應用程序單獨定義,它們是各個工具特有的
數字 0 到 9 代表前 10 個句柄。可以使用命令 Cmd.exe 運行程序,并對該程序前 10 個句柄中的任何一個句柄進行重定向。要指定要用的句柄,請在重定向操作符之前鍵入該句柄的數字。如果未定義句柄,則默認的 < 重定向輸入操作符是 0,而默認的 > 重定向輸出操作符是 1。鍵入 < 或 > 操作符之后,必須指定數據的讀寫位置。可以指定文件名或其他現有的句柄。
要指定重定向到現有句柄,請使用與 (&) 字符,后面接要重定向的句柄號(即 &句柄號)。例如,下面的命令可以將句柄 2(即 STDERR)重定向到句柄 1(即 STDOUT):
2>&1
下表列出了可用于重定向輸入和輸出數據流的操作符。
重定向操作符 描述
> 將命令輸出寫入到文件或設備(如打印機),而不是命令提示符窗口或句柄。
< 從文件而不是從鍵盤或句柄讀入命令輸入。
>> 將命令輸出添加到文件末尾而不刪除文件中已有的信息。
>& 將一個句柄的輸出寫入到另一個句柄的輸入中。
<& 從一個句柄讀取輸入并將其寫入到另一個句柄輸出中。
| 從一個命令中讀取輸出并將其寫入另一個命令的輸入中。也稱作管道。
默認情況下,可以從鍵盤將命令輸入(即 STDIN 句柄)發送到 Cmd.exe,然后由 Cmd.exe 將命令輸出(即 STDOUT 句柄)發送到命令提示符窗口。
重定向輸入 (<)
要通過鍵盤將輸入重定向到文件或設備,請使用 < 操作符。例如,要從 File.txt 獲取 sort 命令的輸入,請鍵入:
sort<file.txt
File.txt 的內容將以字母順序列表的方式顯示在命令提示符窗口中。
< 操作符可以打開具有只讀訪問權限的指定文件名。因此,不能在使用該操作符時向文件中寫入信息。例如,如果以 <&2 啟動程序,則所有試圖讀取句柄 0 的操作都將失敗,因為句柄 2 最初是以只寫訪問方式打開的。
注意
0 是 < 重定向輸入操作符的默認句柄。
重定向輸出 (>)
幾乎所有的命令都將輸出發送到命令提示符窗口。即使將輸出發送到驅動器或打印機的命令也會在命令提示符窗口顯示消息和提示。
要將輸出從命令提示符窗口重定向到文件或設備,請使用 > 操作符。可以在許多命令中使用該操作符。例如,要將 dir 輸出重定向到 Dirlist.txt,請鍵入:
dir>dirlist.txt
如果 Dirlist.txt 不存在,Cmd.exe 將創建該文件。如果 Dirlist.txt 存在,Cmd.exe 將使用 dir 命令的輸出替換文件中的信息。
要運行 netsh routing dump 命令,然后將輸出發送到 Route.cfg,請鍵入:
netsh routing dump>c:\route.cfg
> 操作符可以打開具有只寫訪問權限的指定文件。因此,不能使用該操作符讀取文件。例如,如果使用重定向操作符 >&0 啟動程序,則寫入句柄 1 的所有嘗試操作都將失敗,因為句柄 0 最初是以只讀訪問方式打開的。
注意
1 是 > 重定向輸出操作符的默認句柄。
復制句柄
重定向操作符 & 可以將輸出或輸入從一個指定句柄復制到另一個指定的句柄。例如,要將 dir 輸出發送到 File.txt 并將錯誤輸出發送到 File.txt,請鍵入:
dir>c:\file.txt 2>&1
復制句柄時,可以復制該句柄原狀態的所有特性。例如,如果一個句柄具有只讀訪問的屬性,則該句柄的所有副本都具有只讀訪問屬性。不能將一個具有只讀訪問屬性的句柄復制到另一個具有只寫訪問屬性的句柄。
使用 & 操作符重定向輸入和副本
要將重定向輸入操作符 (<) 與復制操作符 (&) 結合使用,指定的文件必須已經存在。如果輸入文件存在,Cmd.exe 將以只讀方式打開該文件,然后將文件包含的字符作為輸入發送到此命令(如同從鍵盤輸入一樣)。如果指定了句柄,Cmd.exe 將指定的句柄復制到系統現有的句柄中。
例如,要以句柄 0 輸入讀取(即 STDIN)的方式打開 File.txt,請鍵入:
<file.txt
要打開 File.txt,并在內容排序后將輸出發送到命令提示符窗口(即 STDOUT),請鍵入:
sort<file.txt
要查找 File.txt,然后將句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到 Search.txt,請鍵入:
findfile file.txt>search.txt 2<&1
要以句柄 0 輸入讀取(即 STDIN)的方式復制用戶定義的句柄 3,請鍵入:
<&3
使用 & 操作符重定向輸出和復制
如果將輸出重定向到文件且指定了現有的文件名,Cmd.exe 將以只寫方式打開文件并覆蓋該文件內容。如果指定了句柄,Cmd.exe 將文件復制到現有句柄中。
要將用戶定義的句柄 3 復制到句柄 1,請鍵入:
>&3
要將包括句柄 2(即 STDERR)的所有輸出從 ipconfig 命令重定向到句柄 1(即 STDOUT),然后將輸出重定向到 Output.log,請鍵入:
ipconfig.exe>>output.log 2>&1
使用 >> 重定向操作符附加輸出
要從命令中將輸出添加到文件末尾而不丟失文件中已存在的任何信息,請使用兩個連續的大于號(即 >>)。例如,使用下列命令可以將 dir 命令生成的目錄列表附加到 Dirlist.txt 文件:
dir>>dirlist.txt
要將 netstat 命令的輸出附加到 Tcpinfo.txt 的末尾,請鍵入:
netstat>>tcpinfo.txt
使用管道操作符 (|)
管道操作符 (|) 可以提取一個命令的輸出(默認情況下是 STDOUT),然后將其定向到另一個命令的輸入(默認情況下是 STDIN)中。例如,使用下面的命令可以對目錄進行分類:
dir | sort
在本例中,將同時啟動兩個命令,但隨后 sort 命令會暫停,直到它接收到 dir 命令的輸出為止。sort 命令使用 dir 命令的輸出作為輸入,然后將輸出發送到句柄 1(即 STDOUT)。
合并帶重定向操作符的命令
通過合并帶有其他命令和文件名的篩選器命令,可以創建自定義命令。例如,可以使用以下命令存儲包含“LOG”字符串的文件名:
dir /b | find "log" loglist.txt
dir 命令的輸出是通過 find 篩選器命令進行發送的。包含字符串“LOG”的文件名作為文件名列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存儲在文件 Loglist.txt 中。
要在相同命令中使用多個篩選器,請使用管道 (|) 分隔篩選器。例如,下面的命令將搜索 C 盤上的每個目錄以查找包含“LOG”字符串的文件名,并且在命令提示符窗口中每次顯示一屏:
dir c:\ /s /b | find "log" | more
利用管道 (|) 可以對 Cmd.exe 進行定向,使其通過 find 篩選器命令發送 dir 命令輸出。find 命令只選擇包含字符串“LOG”的文件名。more 命令可以顯示 find 命令選擇的文件名(在命令提示符窗口中每次顯示一屏)。
感謝各位的閱讀!關于“cmd批處理nul的使用示例”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。