1. 程式人生 > 實用技巧 >windows batch cmd 批處理命令之 重定向 和 >nul

windows batch cmd 批處理命令之 重定向 和 >nul

輸出重定向命令:>, >>

將輸出資訊重定向到指定的裝置或檔案。系統預設輸出到顯示器。

echo aaaaa>a.txt 即可將本在顯示器上顯示的資訊aaaaa輸出到檔案a.txt中,螢幕上沒有任何顯示。如果檔案a.txt本來已經存在,該命令將首先擦除a.txt中的所有資訊,然後寫入資訊aaaaa;若a.txt本來就不存在,該命令即可新建一個a.txt檔案,並寫入資訊aaaaa。

使用命令:echo hello >1.txt將建立檔案1.txt,內容為"hello "(注意行尾有一空格)

使用命令:echo hello>1.txt將建立檔案1.txt,內容為"hello"(注意行尾沒有空格)

">nul 2>nul"可以遮蔽一切螢幕的輸出,例如:dir >nul 2>nul這樣螢幕上什麼都不會輸出,也就是沒有結果。

1>nul 表示將正確執行目錄樹的資訊禁止輸出,2>nul 表示將執行過程中的錯誤資訊禁止輸出。

echo aaaaa>>a.txt 類似於echo aaaaa>a.txt。區別在於:如果a.txt本已存在,>a.txt會擦除a.txt中的原有內容,而>>a.txt並不擦除原有內容,僅在a.txt檔案的末尾新增資訊aaaaa。a.txt不存在時,二者沒有差別。

4.輸入重定向命令:<

將輸入資訊來源重定向為指定的裝置或檔案。系統預設從顯示器讀取輸入資訊。

  @echo off

  echo abcdefg——這是檔案a.txt中的資訊>a.txt

  echo 請任意輸入字元,以回車結束:

  set /p ifo=

  cls

  echo 【 從螢幕獲得的輸入資訊 】

  echo %ifo%

  set /p ifo=<a.txt

  echo 【 從檔案a.txt獲得的輸入資訊 】

  echo %ifo%

  pause>nul

例如,regedit /s c:\windows\edit.reg >NUL,這其中的>nul是什麼用途呢?

解釋:這是DOS命令的問題。

以前沒有windows的時候,dos進行什麼操作都是人手輸入一條命令,然後系統返回這條命令的結果。

批處理就是用一個檔案儲存若干條命令(裡面還可以有條件判斷、迴圈等操作),執行該檔案就等於執行其儲存的若干條命令。

你問這一語句,只是一條dos命令,並不是批處理。當然,它可能作為一條命令放在批處理檔案裡面,但概念不能混淆。

剛才說了,dos命令是使用者敲入命令,計算機執行,然後返回。無論其結果是否有錯,都有所返回,返回計算結果或者錯誤資訊。——預設情況是這樣。

那是因為dos命令的輸出方是控制檯。dos命令是可以控制輸出方的,可以把結果輸出到螢幕(控制檯),也可以把結果輸出到檔案。控制輸出到哪裡就需要一個dos的重定向符,">"或者">>"。(其實還有輸入定向的,如"<"。)

我們平時敲命令,預設定向是控制檯。例如dir命令,其實實際運行了"dir >con"。當我們希望把檔案列表到檔案,就可以把重定向轉到檔案,可以"dir >list.txt",但若原來存在list.txt則會覆蓋。若list.txt本來已經有內容,希望把dir到的結果追加到檔案,可以"dir >>list.txt"。這個你可以自己試試。

同樣道理,"nul"是空的意思。把執行結果定向到空,意思便是不返回任何結果,無論它是錯是對。這樣做對於批處理裡面的命令有一個好處,就是在執行的時候你看不到它逐條執行的結果。(當然,逐條執行的命令父還是會看到的,除非開始就用echo off命令或者@命令。)

這樣解釋應該清楚了吧。它只是執行一條關於登錄檔的命令,並且不返回任何結果(操作成功或者失敗),跟刪除檔案沒有關係。