您現在的位置是:首頁 > 音樂首頁音樂
Dos 命令進階(三)---批處理(上)
必須是批處理中僅有的語句是什麼意思
批處理指令碼講解思路
一. 批處理介紹
1、批處理的概述:
批處理,也稱為批處理指令碼,英文譯為BATCH,批處理檔案字尾BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:
(1)每一行可視為一個命令,
(2)每個命令裡可以含多條子命令,
(3)從第一行開始執行,直到最後一行結束,它執行的平臺是DOS。
批處理有一個很鮮明的特點:
使用方便、靈活,功能強大,自動化程度高。
批處理檔案的副檔名是BAT或者CMD,把任何一批命令放在有該副檔名的檔案裡,執行的時候都會按順序逐條的執行, 在以後學習內容中, 還可以在其中加入一些邏輯判斷的語句,即讓裡面的命令在滿足一定條件時執行指定的命令。
1、批處理的概述:
2、舉例說明:
:建立批處理檔案
新建一個文字文件,將名字改為 第一個例項。bat
建立批處理檔案 第一個例項。bat
重新命名
第一步
:寫程式碼
右鍵“第一個例項。bat”檔案,選中“編輯”,然後寫程式碼。程式碼如下:
@echo off
echo 非常感謝所有條友的關注與支援!
echo 感激不已, 惟有認真, 毫無保留的分享。
pause
編輯批處理指令碼
第二步
:儲存後,雙擊“第一個例項。bat”執行。
執行批處理指令碼
第三步
@echo off 這一句是
簡單瞭解程式碼意思:
,如果沒有這一句的話會顯示一些比較礙眼的資訊。
echo 非常感謝所有條友的關注與支援!
echo 感激不已, 惟有認真, 毫無保留的分享。
關閉回顯(預設回顯是開啟的)
pause 這個pause,英文是
上面兩條指令的結果是在螢幕上列印echo後面的內容(如上圖例指令碼執行的結果)
的意思,讓指令碼執行完上面的命令後
暫停
等使用者確認退出
(1)、echo off 關閉回顯(即批處理中的命令語句不會顯示)
(2)、echo on 打開回顯
編輯中去除關閉回顯的指令行
開啟回顯執行的結果
在CMD中解釋一下回顯是咋個意思
(3)、符號“@”的意思是不顯示它後面的命令語句,只顯示命令執行的結果!
把首行命令中的小老鼠符號去掉看看
(4)、echo 用於顯示
echo命令的作用有兩個,一個時在CMD上顯示一行內容,
如:echo 非常感謝所有條友的關注與支援!!
還有一個是顯示關閉命令的回顯:echo off
我們在echo off命令前加一個“@”符號是為了不讓echo off這條命令本身顯示出來,可以讓批處理達到整體的美觀!
如測試以下程式碼:
@echo off
echo 你好
echo 你好
pause
第二個例項
詳細解釋:
pause命令就是暫停的意思,防止批處理執行完畢後直接退出,執行到pause命令時CMD就會顯示
“請按任意鍵繼續”這一行!
再次解釋一下:
前面幾篇基礎知識的連結:
DOS基礎命令彙總(一)
DOS基礎命令彙總(二,三,四,五)
Dos命令進階(一)——-Net, Netstat
Dos 命令進階(二)——-FTP命令
如果大家對那個DOS命令不明白,可以透過輸入“命令”/? 或 執行 “help 命令名”
3、基礎知識補充
@echo off
echo 正在清除系統垃圾檔案,請稍後。。。
del /s /f /q %systemdrive%\*。tmp >nul 2>nul
del /s /f /q %systemdrive%\*。gid >nul 2>nul
del /s /f /q %systemdrive%\*。chk >nul 2>nul
del /s /f /q %systemdrive%\*。old >nul 2>nul
del /s /f /q “%userprofile%\localsettings\temp\*。*” >nul 2>nul
del /s /f /q“%userprofile%\recent\*。*” >nul 2>nul
del /s /f /q“%userprofile%\cookies\*。*” >nul 2>nul
del /s /f /q “%userprofile%\localsettings\history\*。*” >nul 2>nul
del /s /f /q “%windir%\temp\*。*”>nul 2>nul
del /s /f /q“%windir%\prefetch\*。*” >nul 2>nul
echo 垃圾檔案清理完畢!
echo。 & pause
4、具體例項分析
有了前面幾篇基礎命令的學習, 想必條友已經知道這個 del 命令是怎麼個意思了吧, 它就是刪除檔案的命令。
分析例項程式碼:
del /s /f /q %systemdrive%\*.tmp >nul 2>nul 取這一行程式碼來說明一下
引數是刪除當前目錄及其子目錄下的指定檔案
/s
表示刪除沒商量,強制刪除
/f
表示靜默執行, 不提示確認資訊。
/q
echo 檢視系統環境變更
%systemdrive% 這個是系統環境變數, 你在CMD視窗執行 echo %systemdrive% 看是什麼結果
這個呢? 它的意思是將命令執行時的資訊或者錯誤, 還是圖解一下吧。
>nul 和 2>nul 的功能演示(後面的特殊符號中還會提到)
%systemdrive% 看是什麼結果
這是一個用來清除系統垃圾檔案的批處理程式。命令其實也是很簡單的,主要是用到
>nul 2>nul
來實現, 有關“del”命令的引數大家可以參考
注:
來得到詳細的幫助。
另外還有
“del”命令和相關的引數
。那麼它們是什麼呢,這些其實是
“del /?”
,也
“%systemdrive%、%userprofile%”
的另一種表示形式而已。我們可以透過輸入
系統變數
來看看它代表的是系統中的那個目錄。那麼其它的也是一樣
就是系統目錄
的意思是,這個
“echo %userprofile%”
,它表示的是
*.tmp
。不知道大家是否能理解?
*號是一個萬用字元號
所有以 .tmp 為副檔名的檔案
有關係統變數和萬用字元後面還會詳細說明
隱藏執行的命令,只顯示結果。
例子:
echo 條友們好
@echo 條友們辛苦了
pause
遮蔽回顯命令的演示
二. 特殊字元詳解
命令連線符號,就是將兩個命令連續執行,不用分行
例子:
dir c:\ & dir d:\ & dir e:\
多命令同行執行連線符 &
1、@
連線兩個命令,
2、&
說白點兒就是,
3、&&
高一學的邏輯運算知識在這裡用上了, 這叫
當&&前的命令成功時,才執行&&後的命令
兩個條件有一個為假, 整個都為假了, 則就沒必要執行下去了, &&前面那條指令失敗了, &&後面的指令就不會再執行了。
例子:
dir x:\ && dir d:\
一假則假
&&前面的命令先執行成功才能執行 &&後面的命令, 如果前面命令執行失敗, 後面就不執行了.
命令連線符號,表示
一假則假,
4、||
。 邏輯上的叫
上一條命令執行失敗後,才執行||符號後的內容
例子:
dir x: || dir c:\
|| 前面的失敗了才執行 || 後的指令
如果執行: dir c:\ || dir d:\ 呢, 則只執行 dir c:\ , dir d:\ 這條指令就不會執行, 這一條希望條友能親自嘗試一下看。
這個命令跟上一個相反, 如果 || 前的執行成功, 則 || 後面的命令就不執行了
一真則真
,就是
5、|
管道是一種
管道符號
, 就是
將上一個命令的輸出的內容,作為下一個命令的輸入內容
。
這個符號 “|” 就好似一條管理, 將前的送到後面去, 發揮你屌炸天的想象力吧, 嘿嘿嘿
例子:
netstat -an | find “135”
為了具體我先分別執行 netstat -an 和 find “135” , 而後的 find “135” 意思是在某檔案中查詢字串135, 在哪個檔案中呢, 這裡沒有給, 所以單獨執行 find “135” 鐵定會執行失敗的, 看下圖:
單獨執行 netstat
find命令, 在某檔案中檢視指定的字串
netstat 與 find 透過管道命令配合執行
很形象的說法
重定向符號,將命令的輸出結果重定向到其後面的裝置中去,
將 | 前面的指令執行後的輸出結果暫存在記憶體中, 作為 | 後面指令執行的輸入內容
例子:
dir c:\ > cdir。txt
dir c:\ > d:\cdir。txt
重定義符號 > 的使用
6、>
重定向符號,將命令的輸出結果重定向到其後面的裝置中去,
後面的裝置中的內容被覆蓋
該符號的作用與前面那個
7、>>
符號的
後面的裝置中的內容會被增加在後面
這個
>
符號的作用是向一個檔案中追加內容, 如果該檔案不存在則建立, 如果存在, 則在檔案已有內容的後面
區別是:
要輸出的內容。
而
>>
符號的作用是, 新建一個檔案, 並向該檔案中新增要輸出的內容, 如果指定的檔案已存在, 則
追加
檔案內容
>
要輸出的內容。
例子:
echo 第一行內容 >> test。txt
echo 第二行內容 >> test。txt
echo 第三行內容 > test。txt
兩個重定向符號的對比
先清空
跳脫字元, ^是對特殊符號<,>,&的前導字元,在命令中他將以上3個符號的特殊功能去掉,僅僅只把他們當成符號而不使用他們的特殊意義。
跳脫字元的作用演示
再新增
這個百分號嚴格來說是算不上命令的,它只是
8、^
而已(多個%一起使用的情況除外)。
引用變數用%var%,呼叫程式
9、% 批處理變數引導符
用%1至%9等等
批處理中的引數
%0 指批處理檔案本身,包括完整的路徑和副檔名
引數 %0的用處演示
%0 引數在批處理中的演示效果
%1 第一個引數
%9 第九個引數
%1——%9這是9個外部引數, 多於9個時就使用%*
計算幾個數字的和並列印
%* 從第一個引數開始的所有引數
匹配所有外部引數%*
外部引數
,以達到批處理本身迴圈的目的,也可以複製檔案自身等等。
例:最簡單的複製檔案自身的方法
程式碼d:\第五個例項。bat:
copy %0
這段程式碼的意思就是 複製指令碼自身到當前目錄下。 這裡省略一個點, 完整的寫是:
copy %0
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %* 為命令列傳遞給批處理的引數
引數%0具有特殊的功能,可以呼叫批處理自身
先切換到與指令碼檔案所在目錄不同的目錄中,比如C盤下, 再執行:
d:\第五個例項。bat
.
新增行內註釋
如果條友看了我前面講的那CD 命令應該知道 . 代表當前目錄, .. 代表父級目錄, 所以就有 cd .. 就是返回上級目錄.
(可以用作行內註釋,不能出現重定向符號和管道符號)
為什麼這樣呢?此時“註釋內容”其實被當作變數,其值是空的,故只起註釋作用,
小技巧:
%註釋內容%
萬用字元號,表示
不過這種用法容易出現語法錯誤,一般不用(等於沒說)。
例子:
dir c:\windows\*。log
del /s /q /f c:\windows\*。log 強制刪除
10、*
所有以 。log 結尾的檔案。
萬用字元 * 號的應用例項
任意個任意字元
萬用字元號,表示
當前目錄及其子目錄下
例子:
dir c:\?indows 列出C:\ 目錄下所有任意以單個字元開頭並以 indows 結尾名稱的檔案列表
如果 C:\下有Aindows , Bindows, HEindows 三個資料夾, 那麼 ?indows 匹配 Aindows , Bindows 兩個檔案, 但HEindows卻不匹配, 因為它是以 HE兩個字元開頭的檔案。
萬用字元 ? 的操作例項
11、?
表示
任意一個字元
例子:
dir 。\ , dir 。 , dir 三條指令是同樣的執行結果, 如果是當前目錄, 點這個符號可以省略
點符號在CMD中的應用
點符號在CMD中的應用
12、.
表示
當前目錄
例子:
dir 。。\ 檢視父級目錄下的檔案列表
兩點表示上一級目錄或父級目錄
13、..
界定符號,
上一級目錄(也稱父級目錄)
例子:
dir “c:\Documents and settings” 這個界定符在WIN7中可以不用, 但在XP系統中還是會要用到的。 當你要切換的目錄名中有空格時, 請使用 雙引號 括起來, 否則會報錯。 建議需要不需要都使用這個界定符, 應該更保險一些。
目錄名中帶空格須使用雙引號進行包括
14、" "
通常用來引用有空格的目錄
,表示後面的內容是一個標籤名
例子:
@echo off
:again
echo 誠心感謝條碼們對小編的關注與支援!
pause
goto again
標籤跳轉操作
15、:
某些時候可以
標籤定位符號
例子:
echo,
dir,c:\ 這個例子的意思太白了, 小編就不演示截圖了。
16、,
分號,當
當空格來使用
例子:
dir c:\;d:\ 如果你想同時檢視 C:\, D:\ 兩個目錄下的檔案列表, 就可以一個DIR 命令, 後跟多個要檢視的目錄路徑, 相互之間以分號隔開就可以了。
17、;
表示後面的語句是
命令相同時,可以將不同目標用來隔離
。相當於c++中的“//”
例子:
@echo off
::顯示c盤根目錄檔案。 (
18、::
)
dir c:\*。txt
pause
註釋符的使用
註釋
將要執行的程式碼存在一個文字test。txt 中:
d:
cd D:\我的頭條20171127
dir
pause
執行命令:
cmd。exe < test。txt
輸入重定向符號的使用
註釋就是說明性的文字內容, 不作為指令執行
EQU(Equ-al) - 等於
NEQ(N-OT Equ-al) - 不等於
LSS(LESS) - 小於
LEQ(L-ESS Equ-al)- 小於或等於
GTR(GREATER) - 大於
GEQ(G-REATER Equ-al) - 大於或等於
例如下面這段程式碼:
dir aaaa
if %ERRORLEVEL% EQU 0 (echo success) else (echo fail) [如果等於0說明執行成功, 否則執行失敗]
先執行 dir aaaa 這個命令, 下面 if 命令語句(後面會細講)是用來判斷上一條命令是否執行成功, 如果成功就列印 success, 否則列印 fail。
邏輯運算子的使用
19. < 輸入重定向
@echo off
ping /n www。qq。com || shutdown /r /t 180 /c 命令執行失敗了,180秒後重啟! && exit
%0
這條批處理檔案主要是用ping命令來判斷網路的連通性,當我們的ping命令執行成功後就不會執行它後面的內容。那假如沒有ping通的話就執行它後面的相關命令了。
%0它表示的就是
20. 邏輯運算子
我們的批處理程式。
綜合例項:
如果不小心進入倒計時關機狀態, 請執行 shutdown -a 指令來取消哦。
開啟執行例項
我關閉了執行視窗或CTRL+C, 然後就。。。
取消關機狀態
來看一下shutdown命令的幫助
shutdown /? 幫助文件檢視
如何判斷一條指令是否執行成功
無限迴圈的執行