【Bat命令集】

zgwhjyzx發表於2013-08-23


1 echo 和 @

DOS在執行批處理時, 會依次執行批處理中的每條命令, 並且會在顯示器上顯示, 如果你不想讓它們顯示, 可以加一個“echo off” 當然,“echo off”也是命令, 它本身也會顯示, 如果連這條也不顯示, 就在前面加個“@”。
@                      #關閉單行回顯
echo off               #從下一行開始關閉回顯
@echo off              #從本行開始關閉回顯。一般批處理第一行都是這個
echo on                #從下一行開始開啟回顯
echo                   #顯示當前是 echo off 狀態還是 echo on 狀態
echo.                  #輸出一個”回車換行”,空白行
                          #(同echo, echo; echo+ echo[ echo] echo/ echo")
 
2 errorlevel
echo %errorlevel%
每個命令執行結束,可以用這個命令列格式檢視返回碼
預設值為0,一般命令執行出錯會設 errorlevel 為1


3 dir
dir                   #顯示當前目錄中的檔案和子目錄
dir /a                #顯示當前目錄中的檔案和子目錄,包括隱藏檔案和系統檔案
dir c: /a:d           #顯示 C 盤當前目錄中的目錄
dir c: /a:-d          #顯示 C 盤根目錄中的檔案
dir c:" /b/p          #/b只顯示檔名,/p分頁顯示
dir *.exe /s          #顯示當前目錄和子目錄裡所有的.exe檔案


4 cd
cd"                   #進入根目錄
cd                    #顯示當前目錄
cd /d d:"sdk          #可以同時更改碟符和目錄


5 md
md d:"a"b"c           #如果 d:"a 不存在,將會自動建立中級目錄
#如果命令副檔名被停用,則需要鍵入 mkdir "a"b"c。


6 rd
rd abc                #刪除當前目錄裡的 abc 子目錄,要求為空目錄
rd /s/q d:"temp       #刪除 d:"temp 資料夾及其子資料夾和檔案,/q安靜模式


7 del
del d:"test.txt       #刪除指定檔案,不能是隱藏、系統、只讀檔案
del /q/a/f d:"temp"*.*
刪除 d:"temp 資料夾裡面的所有檔案,包括隱藏、只讀、系統檔案,不包括子目錄
del /q/a/f/s d:"temp"*.*
刪除 d:"temp 及子資料夾裡面的所有檔案,包括隱藏、只讀、系統檔案,不包括子目錄


8 ren
 ren d:"temp tmp       #支援對資料夾的重新命名

9 cls
清屏

10 type
顯示檔案內容
type c:"boot.ini      #顯示指定檔案的內容,程式檔案一般會顯示亂碼
type *.txt            #顯示當前目錄裡所有.txt檔案的內容

 

11 copy
拷貝檔案
copy c:"test.txt d:"test.bak
複製 c:"test.txt 檔案到 d:" ,並重新命名為 test.bak
copy con test.txt
從螢幕上等待輸入,按 Ctrl+Z 結束輸入,輸入內容存為test.txt檔案
con代表螢幕,prn代表印表機,nul代表空裝置
copy 1.txt + 2.txt 3.txt
合併 1.txt 和 2.txt 的內容,儲存為 3.txt 檔案
如果不指定 3.txt ,則儲存到 1.txt
copy test.txt +
複製檔案到自己,實際上是修改了檔案日期

 

12 title
設定cmd視窗的標題
title 新標題          #可以看到cmd視窗的標題欄變了

 

13 ver
顯示系統版本

 

14 label 和 vol
設定卷標
vol                   #顯示卷標
label                 #顯示卷標,同時提示輸入新卷標
label c:system        #設定C盤的卷標為 system

 

15 pause
暫停命令

 

16 rem 和 ::
註釋命令
註釋行不執行操作

 

17 date 和 time
日期和時間
date            #顯示當前日期,並提示輸入新日期,按""回車""略過輸入
date/t          #只顯示當前日期,不提示輸入新日期
time            #顯示當前時間,並提示輸入新時間,按""回車""略過輸入
time/t          #只顯示當前時間,不提示輸入新時間

 

18 goto 和 :
跳轉命令
:label          #行首為:表示該行是標籤行,標籤行不執行操作
goto label      #跳轉到指定的標籤那一行

 

19 find (外部命令)
查詢命令
find ""abc"" c:"test.txt
在 c:"test.txt 檔案裡查詢含 abc 字串的行
如果找不到,將設 errorlevel 返回碼為1
find /i “abc” c:"test.txt
查詢含 abc 的行,忽略大小寫
find /c ""abc"" c:"test.txt
顯示含 abc 的行的行數

 

20 more (外部命令)
逐屏顯示
more c:"test.txt      #逐屏顯示 c:"test.txt 的檔案內容

 

21 tree
顯示目錄結構
tree d:"              #顯示D盤的檔案目錄結構

 

22 &
順序執行多條命令,而不管命令是否執行成功

 

23 &&
順序執行多條命令,當碰到執行出錯的命令後將不執行後面的命令
find ""ok"" c:"test.txt && echo 成功
如果找到了""ok""字樣,就顯示""成功"",找不到就不顯示

 

24 ||
順序執行多條命令,當碰到執行正確的命令後將不執行後面的命令
find ""ok"" c:"test.txt || echo 不成功
如果找不到""ok""字樣,就顯示""不成功"",找到了就不顯示

 

25 |
管道命令
dir *.* /s/a | find /c "".exe""
管道命令表示先執行 dir 命令,對其輸出的結果執行後面的 find 命令
該命令列結果:輸出當前資料夾及所有子資料夾裡的.exe檔案的個數
type c:"test.txt|more
這個和 more c:"test.txt 的效果是一樣的

 

26 > 和 >>
輸出重定向命令
> 清除檔案中原有的內容後再寫入
>> 追加內容到檔案末尾,而不會清除原有的內容
主要將本來顯示在螢幕上的內容輸出到指定檔案中
指定檔案如果不存在,則自動生成該檔案
type c:"test.txt >prn
螢幕上不顯示檔案內容,轉向輸出到印表機
echo hello world>con
在螢幕上顯示hello world,實際上所有輸出都是預設 >con 的
copy c:"test.txt f: >nul
拷貝檔案,並且不顯示""檔案複製成功""的提示資訊,但如果f盤不存在,還是會顯示出錯資訊
copy c:"test.txt f: >nul 2>nul
不顯示”檔案複製成功”的提示資訊,並且f盤不存在的話,也不顯示錯誤提示資訊
echo ^^W ^> ^W>c:"test.txt
生成的檔案內容為 ^W > W
^ 和 > 是控制命令,要把它們輸出到檔案,必須在前面加個 ^ 符號

 

27 <<br> 從檔案中獲得輸入資訊,而不是從螢幕上
一般用於 date time label 等需要等待輸入的命令
@echo off
echo 2005-05-01>temp.txt
date del temp.txt
這樣就可以不等待輸入直接修改當前日期

 

28 %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*
命令列傳遞給批處理的引數
%0 批處理檔案本身
%1 第一個引數
%9 第九個引數
%* 從第一個引數開始的所有引數

批引數(%n)的替代已被增強。您可以使用以下語法:
       %~1           - 刪除引號(""),擴充 %1
      %~f1          - 將 %1 擴充到一個完全合格的路徑名
      %~d1          - 僅將 %1 擴充到一個驅動器號
      %~p1          - 僅將 %1 擴充到一個路徑
      %~n1          - 僅將 %1 擴充到一個檔名
      %~x1          - 僅將 %1 擴充到一個副檔名
      %~s1          - 擴充的路徑指含有短名
      %~a1          - 將 %1 擴充到檔案屬性
      %~t1          - 將 %1 擴充到檔案的日期/時間
      %~z1          - 將 %1 擴充到檔案的大小
      %~$PATH : 1 - 查詢列在 PATH 環境變數的目錄,並將 %1
                    擴充到找到的第一個完全合格的名稱。如果環境
                    變數名未被定義,或者沒有找到檔案,此組合鍵會
                    擴充到空字串
 可以組合修定符來取得多重結果:
      %~dp1         - 只將 %1 擴充套件到驅動器號和路徑
     %~nx1         - 只將 %1 擴充套件到檔名和副檔名
     %~dp$PATH:1 - 在列在 PATH 環境變數中的目錄裡查詢 %1,
                    並擴充套件到找到的第一個檔案的驅動器號和路徑。