批處理常用命令及用法大全

us_yunleiwang發表於2013-12-16
閱讀本文需要一定的dos基礎概念,象:碟符、檔案、目錄(資料夾)、子目錄、根目錄、當前目錄每個命令的完整說明請加 /? 引數參考微軟的幫助文件可以看到,在 /? 幫助裡,"命令副檔名"一詞會經常出現"命令副檔名"是指相對於win98的dos版本而言,每個命令新增的功能命令測試環境 win2000proSP4win98的命令功能太少,就不作研究了

注:如果對某一命令還不是很熟悉,可以在命令列視窗下輸入:命令名/?的方式來獲得幫助。
例如:對dir命令的應用不熟悉,可以在命令列視窗下輸入:

dir /?

1 echo 和 @回顯控制命令
@                    #關閉單行回顯
echo off             #從下一行開始關閉回顯
@echo off            #從本行開始關閉回顯。一般批處理第一行都是這個
echo on              #從下一行開始開啟回顯
echo                 #顯示當前是 echo off 狀態還是 echo on 狀態
echo.                #輸出一個"回車換行",一般就是指空白行
echo hello world     #輸出hello world
"關閉回顯"是指執行批處理檔案時,不顯示檔案裡的每條命令,只顯示執行結果批處理開始和結束時,系統都會自動開啟

回顯
2 errorlevel程式返回碼

echo %errorlevel%每個命令執行結束,可以用這個命令列格式檢視返回碼用於判斷剛才的命令是否執行成功預設值為0,
一般命令執行出錯會設 errorlevel 為1

3 dir顯示目錄中的檔案和子目錄列表
dir                 #顯示當前目錄中的檔案和子目錄
dir /a              #顯示當前目錄中的檔案和子目錄,包括隱藏檔案和系統檔案
dir c: /a:d         #顯示 C 盤當前目錄中的目錄
dir c:\ /a:-d       #顯示 C 盤根目錄中的檔案dir d:\mp3 /b/p     #逐屏顯示 d:\mp3 目錄裡的檔案

,只顯示檔案

名,不顯示時間和大小
dir *.exe /s顯示當前目錄和子目錄裡所有的.exe檔案其中 * 是萬用字元,代表所有的檔名,還一個通配

符 ? 代表一個

任意字母或漢字如 c*.* 代表以 c 開頭的所有檔案?.exe 代表所有檔名是一個字母的.exe檔案如果指定

的目錄或檔案

不存在,將返回 errorlevel 為1;每個資料夾的 dir 輸出都會有2個子目錄 . 和 ... 代表當前目錄.. 代

表當前目錄的

上級目錄
dir .               #顯示當前目錄中的檔案和子目錄
dir ..              #顯示當前目錄的上級目錄中的檔案和子目錄
其它引數可參考 dir /?

4 cd更改當前目錄
cd mp3              #進入當前目錄中的mp3 目錄
cd ..               #進入當前目錄中的上級目錄
cd\                 #進入根目錄
cd                  #顯示當前目錄
cd /d d:\mp3        #可以同時更改碟符和目錄
cd "Documents and Settings"\All users檔名帶空格,路徑前需要加上引號!!如果更改到的目錄不存

在,則出錯返

回 errorlevel=1

5 md建立目錄
md abc              #在當前目錄裡建立子目錄 abc
md d:\a\b\c         #如果 d:\a 不存在,將會自動建立

6 rd刪除目錄
rd abc              #刪除當前目錄裡的 abc 子目錄,要求為空目錄
rd /s/q d:\temp     #刪除 d:\temp 資料夾及其子資料夾和檔案,不需要按 Y 確認

7 del刪除檔案
del d:\test.txt     #刪除指定檔案,不能是隱藏、系統、只讀檔案
del *.*刪除當前目錄裡的所有檔案,不包括隱藏、系統、只讀檔案,要求按 Y 確認
del /q/a/f d:\temp\*.*刪除 d:\temp 資料夾裡面的所有檔案,包括隱藏、只讀、系統檔案,不包括子目

del /q/a/f/s d:\temp\*.*刪除 d:\temp 及子資料夾裡面的所有檔案,包括隱藏、只讀、系統檔案,不包

括子目錄

8 ren檔案重新命名
ren 1.txt 2.bak     #把 1.txt 更名為 2.bak
ren *.txt *.ini     #把當前目錄裡所有.txt檔案改成.ini檔案
ren d:\temp tmp     #支援對資料夾的重新命名

9 cls清屏

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

11 copy拷貝檔案
copy c:\test.txt d:\複製 c:\test.txt 檔案到 d:\
copy c:\test.txt d:\test.bak複製 c:\test.txt 檔案到 d:\ ,並重新命名為 test.bak
copy c:\*.*複製 c:\ 所有檔案到當前目錄,不包括隱藏檔案和系統檔案不指定目標路徑,則預設目標路徑

為當前目錄
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 &順序執行多條命令,而不管命令是否執行成功
c: & cd\ & dir /w相當於把下面3行命令寫到1行去了c:cd\dir /w

23 &&順序執行多條命令,當碰到執行出錯的命令後將不執行後面的命令
f: && cd\ && dir >c:\test.txt注意如果f盤不存在,那麼後面2條命令將不會執行
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 > 和 >>輸出重定向命令
> 清除檔案中原有的內容後再寫入>> 追加內容到檔案末尾,而不會清除原有的內容主要將本來顯示在螢幕

上的內容輸出

到指定檔案中指定檔案如果不存在,則自動生成該檔案
echo hello world>c:\test.txt生成c:\test.txt檔案,內容為hello world這個格式在批處理檔案裡用得很

多,可以生成 

.reg .bat .vbs 等臨時檔案
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
一般用於 date time label 等需要等待輸入的命令
@echo offecho 2005-05-01>temp.txtdate


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

test.bat,內容如下:
@echo off
echo %0
echo %1
echo %2
echo %*
複製程式碼
執行cmd,輸入 c:\test.bat "/a" /b /c /d可以看出每個引數的含意
修改test.bat內容如下
@echo off
echo %1
echo %~1
echo %0
echo %~f0
echo %~d0
echo %~p0
echo %~n0
echo %~x0
echo %~s0
echo %~a0
echo %~t0
echo %~z0
複製程式碼
再執行cmd,輸入 c:\test.bat "/a" /b /c /d可以參照 call/? 或 for/? 看出每個引數的含意注意這裡可

以對檔案進行日期比較和大小比較
echo load "%%1" "%%2">c:\test.txt
複製程式碼
生成的檔案內容為 load "%1" "%2"
批處理檔案裡,用這個格式把命令列引數輸出到檔案

31 set設定變數
引用變數可在變數名前後加 % ,即 %變數名%
set                    #顯示目前所有可用的變數,包括系統變數和自定義的變數
echo %SystemDrive%     #顯示系統盤碟符。系統變數可以直接引用
set p                  #顯示所有以p開頭的變數,要是一個也沒有就設errorlevel=1
set p=aa1bb1aa2bb2     #設定變數p,並賦值為 = 後面的字串,即aa1bb1aa2bb2
echo %p%               #顯示變數p代表的字串,即aa1bb1aa2bb2
echo %p:~6%            #顯示變數p中第6個字元以後的所有字元,即aa2bb2
echo %p:~6,3%          #顯示第6個字元以後的3個字元,即aa2
echo %p:~0,3%          #顯示前3個字元,即aa1
echo %p:~-2%           #顯示最後面的2個字元,即b2
echo %p:~0,-2%         #顯示除了最後2個字元以外的其它字元,即aa1bb1aa2b
echo %p:aa=c%          #用c替換變數p中所有的aa,即顯示c1bb1c2bb2
echo %p:aa=%           #將變數p中的所有aa字串置換為空,即顯示1bb12bb2
echo %p:*bb=c%         #第一個bb及其之前的所有字元被替換為c,即顯示c1aa2bb2
set p=%p:*bb=c%        #設定變數p,賦值為 %p:*bb=c% ,即c1aa2bb2
set /a p=39            #設定p為數值型變數,值為39
set /a p=39/10         #支援運算子,有小數時用去尾法,39/10=3.9,去尾得3,p=3set /a p=p/10     

     #用 /a 

引數時,在 = 後面的變數可以不加%直接引用set /a p="1&0"         #"與"運算,要加引號。其它支援的

運算子參見

set/?
set p=                 #取消p變數
set /p p=請輸入螢幕上顯示"請輸入",並會將輸入的字串賦值給變數p注意這條可以用來取代 choice 命

注意變數在 if 和 for 的複合語句裡是一次性全部替換的,如
@echo off
set p=aaa
if %p%==aaa (    
  echo %p%   
  set p=bbb    
  echo %p%    )
結果將顯示aaaaaa因為在讀取 if 語句時已經將所有 %p% 替換為aaa這裡的"替換",在 /? 幫助裡就是指"

擴充"、"環境

變數擴充"可以啟用"延緩環境變數擴充",用 ! 來引用變數,即 !變數名!
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set p=aaaif %p%==aaa (  
  echo %p%    
set p=bbb    
echo !p!    )
ENDLOCAL
結果將顯示aaabbb
還有幾個動態變數,執行 set 看不到
%CD%                  #代表當前目錄的字串
%DATE%                #當前日期
%TIME%                #當前時間
%RANDOM%              #隨機整數,介於0~32767
%ERRORLEVEL%          #當前ERRORLEVEL 值
%CMDEXTVERSION%       #當前命令處理器副檔名版本號
%CMDCMDLINE%          #呼叫命令處理器的原始命令列可以用echo命令檢視每個變數值,如 echo %time%

注意 %time% 

精確到毫秒,在批處理需要延時處理時可以用到

32 start批處理中呼叫外部程式的命令,否則等外部程式完成後才繼續執行剩下的指令
start explorer d:\呼叫圖形介面開啟D盤
@echo offcd /d %~dp0regedit /s 勁舞團.regstart patcher.exe
不加 start 命令的話,"勁舞團"執行時,後面會有個黑乎乎的cmd視窗

33 call批處理中呼叫另外一個批處理的命令,否則剩下的批處理指令將不會被執行有時有的應用程式用

start呼叫出錯的

,也可以call呼叫

34 choice (外部命令)選擇命令讓使用者輸入一個字元,從而選擇執行不同的命令,返回碼errorlevel為1234

……win98裡

是choice.comwin2000pro裡沒有,可以從win98裡拷過來win2003裡是choice.exechoice /N /C y /T 5 /D 

y>nul延時5秒

下面是個 choice 語句的例子
@echo off
rem 以下在win2000pro執行通過,從win98裡拷的chioce.com檔案
choice /c:abc aaa,bbb,ccc
if errorlevel 3 goto ccc
if %errorlevel%==2 goto bbb
if errorlevel==1 goto aaa
rem 必須先判斷數值高的返回碼rem 可以看到 errorlevel 值的判斷有3種寫法,有時某種寫法不好用,可

以用另外的寫法
rem 直接執行

chioce相當於執行
choice /c:yn:aaa
echo aaa
goto end
:bbb
echo bbb
goto end
:ccc
echo ccc
goto end
:end

35 assoc 和 ftype檔案關聯assoc 設定'副檔名'關聯,關聯到'檔案型別'ftype 設定'檔案型別'關聯

,關聯到'執行程式和引數'當你雙擊一個.txt檔案時,windows並不是根據.txt直接判斷用 notepad.exe 打

開而是先判斷.txt屬於 txtfile '檔案型別'再呼叫 txtfile 關聯的命令列 txtfile=%SystemRoot%

\system32\NOTEPAD.EXE %1可以在"資料夾選項"→"檔案型別"裡修改這2種關聯
assoc           #顯示所有'副檔名'關聯
assoc .txt      #顯示.txt代表的'檔案型別',結果顯示 .txt=txtfile
assoc .doc      #顯示.doc代表的'檔案型別',結果顯示 .doc=Word.Document.8
assoc .exe      #顯示.exe代表的'檔案型別',結果顯示 .exe=exefile
ftype           #顯示所有'檔案型別'關聯
ftype exefile   #顯示exefile型別關聯的命令列,結果顯示 exefile="%1" %* assoc 

.txt=Word.Document.8設定.txt為word型別的文件,可以看到.txt檔案的圖示都變了
assoc .txt=txtfile恢復.txt的正確關聯 ftype exefile="%1" %*恢復 exefile 的正確關聯

如果該關聯已經被破壞,可以執行 command.com ,再輸入這條命令

36 pushd 和 popd切換當前目錄
@echo off
c: & cd\ & md mp3       #在 C:\ 建立 mp3 資料夾
md d:\mp4               #在 D:\ 建立 mp4 資料夾
cd /d d:\mp4            #更改當前目錄為 d:\mp4
pushd c:\mp3            #儲存當前目錄,並切換當前目錄為 c:\mp3
popd                    #恢復當前目錄為剛才儲存的 d:\mp4一般用處不大,在當前目錄名不確定時,會

有點幫助

32 subst (外部命令)對映磁碟。
subst z: \\server\d     #這樣輸入z:就可以訪問\\server\d了
subst z: /d             #取消該對映
subst                   #顯示目前所有的映

38  xcopy (外部命令)檔案拷貝
xcopy d:\mp3 e:\mp3 /s/e/i/y複製 d:\mp3 資料夾、所有子資料夾和檔案到 e:\ ,覆蓋已有檔案加 /i 

表示如果 e:\ 沒有 mp3 資料夾就自動新建一個,否則會有詢問

39 一些不常用的內部命令
>& 將一個控制程式碼的輸出寫入到另一個控制程式碼的輸入中

切換引數color 設定cmd視窗的顯示顏色
pormpt 更改命令提示符號,預設都是 碟符:\路徑\> ,如 c:\>

40 format (外部命令)格式化硬碟
format c: /q/u/autotest/q表示快速格式化,/autotest表示自動格式化,不需要按 Y 確認/u表示每位元組

用 

F6 覆蓋硬碟資料,使其不可用軟體恢復format c: /c格式化C盤,並檢測壞道

41 fdisk (外部命令)硬碟分割槽win2000不帶

該命令win98裡的fdisk不支援80G以上大硬碟,winme裡的支援fdisk/mbr重建硬碟分割槽表,一般用於清除引

導區病毒、還

原精靈注意使用該命令不能從硬碟啟動,必須軟碟機或光碟機啟動後直接執行

42 ping (外部命令)
ping -l 65500 -t 192.168.1.200不停的向192.168.1.200計算機傳送大小為65500byte的資料包
ping -n 10 127.0.0.1>nulping自己10次,可用於批處理延時10秒

43 SC (外部命令)服務控制命令
sc create aaa displayname= bbb start= auto binpath= "C:\WINDOWS\System32\alg.exe"建立服務,服

務名稱aaa,顯示名稱bbb,啟動型別:自動可執行檔案的路徑"C:\WINDOWS\System32\alg.exe"
sc description aaa "ccc"更改aaa的描述為ccc
sc config aaa start= disabled binpath= "C:\WINDOWS\System32\svchost.exe -k netsvcs"更改aaa的啟

動型別:已禁用更改aaa的可執行檔案的路徑"C:\WINDOWS\System32\svchost.exe -k netsvcs"
sc config aaa start= demand displayname= ddd更改aaa的啟動型別:手動更改aaa的顯示名稱ddd
sc start aaa啟動aaa服務
sc stop aaa停止aaa服務
sc delete aaa刪除aaa服務

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23490154/viewspace-1063385/,如需轉載,請註明出處,否則將追究法律責任。

批處理常用命令及用法大全
請登入後發表評論 登入
全部評論

相關文章