您現在的位置是:首頁 > 音樂首頁音樂

Dos 命令進階(三)---批處理(上)

由 IT知識梳理 發表于 音樂2021-06-21
簡介這個符號 “|” 就好似一條管理, 將前的送到後面去, 發揮你屌炸天的想象力吧, 嘿嘿嘿例子:netstat -an | find “135”為了具體我先分別執行 netstat -an 和 find “135” , 而後的 find “1

必須是批處理中僅有的語句是什麼意思

Dos 命令進階(三)---批處理(上)

批處理指令碼講解思路

一. 批處理介紹

1、批處理的概述:

批處理,也稱為批處理指令碼,英文譯為BATCH,批處理檔案字尾BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:

(1)每一行可視為一個命令,

(2)每個命令裡可以含多條子命令,

(3)從第一行開始執行,直到最後一行結束,它執行的平臺是DOS。

批處理有一個很鮮明的特點:

使用方便、靈活,功能強大,自動化程度高。

批處理檔案的副檔名是BAT或者CMD,把任何一批命令放在有該副檔名的檔案裡,執行的時候都會按順序逐條的執行, 在以後學習內容中, 還可以在其中加入一些邏輯判斷的語句,即讓裡面的命令在滿足一定條件時執行指定的命令。

1、批處理的概述:

2、舉例說明:

:建立批處理檔案

新建一個文字文件,將名字改為 第一個例項。bat

Dos 命令進階(三)---批處理(上)

建立批處理檔案 第一個例項。bat

Dos 命令進階(三)---批處理(上)

重新命名

第一步

:寫程式碼

右鍵“第一個例項。bat”檔案,選中“編輯”,然後寫程式碼。程式碼如下:

@echo off

echo 非常感謝所有條友的關注與支援!

echo 感激不已, 惟有認真, 毫無保留的分享。

pause

Dos 命令進階(三)---批處理(上)

編輯批處理指令碼

第二步

:儲存後,雙擊“第一個例項。bat”執行。

Dos 命令進階(三)---批處理(上)

執行批處理指令碼

第三步

@echo off 這一句是

簡單瞭解程式碼意思:

,如果沒有這一句的話會顯示一些比較礙眼的資訊。

echo 非常感謝所有條友的關注與支援!

echo 感激不已, 惟有認真, 毫無保留的分享。

關閉回顯(預設回顯是開啟的)

pause 這個pause,英文是

上面兩條指令的結果是在螢幕上列印echo後面的內容(如上圖例指令碼執行的結果)

的意思,讓指令碼執行完上面的命令後

暫停

等使用者確認退出

(1)、echo off 關閉回顯(即批處理中的命令語句不會顯示)

(2)、echo on 打開回顯

Dos 命令進階(三)---批處理(上)

編輯中去除關閉回顯的指令行

Dos 命令進階(三)---批處理(上)

開啟回顯執行的結果

Dos 命令進階(三)---批處理(上)

在CMD中解釋一下回顯是咋個意思

(3)、符號“@”的意思是不顯示它後面的命令語句,只顯示命令執行的結果!

Dos 命令進階(三)---批處理(上)

把首行命令中的小老鼠符號去掉看看

(4)、echo 用於顯示

echo命令的作用有兩個,一個時在CMD上顯示一行內容,

如:echo 非常感謝所有條友的關注與支援!!

還有一個是顯示關閉命令的回顯:echo off

我們在echo off命令前加一個“@”符號是為了不讓echo off這條命令本身顯示出來,可以讓批處理達到整體的美觀!

如測試以下程式碼:

@echo off

echo 你好

echo 你好

pause

Dos 命令進階(三)---批處理(上)

第二個例項

詳細解釋:

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

Dos 命令進階(三)---批處理(上)

echo 檢視系統環境變更

%systemdrive% 這個是系統環境變數, 你在CMD視窗執行 echo %systemdrive% 看是什麼結果

這個呢? 它的意思是將命令執行時的資訊或者錯誤, 還是圖解一下吧。

Dos 命令進階(三)---批處理(上)

>nul 和 2>nul 的功能演示(後面的特殊符號中還會提到)

%systemdrive% 看是什麼結果

這是一個用來清除系統垃圾檔案的批處理程式。命令其實也是很簡單的,主要是用到

>nul 2>nul

來實現, 有關“del”命令的引數大家可以參考

注:

來得到詳細的幫助。

另外還有

“del”命令和相關的引數

。那麼它們是什麼呢,這些其實是

“del /?”

,也

“%systemdrive%、%userprofile%”

的另一種表示形式而已。我們可以透過輸入

系統變數

來看看它代表的是系統中的那個目錄。那麼其它的也是一樣

就是系統目錄

的意思是,這個

“echo %userprofile%”

,它表示的是

*.tmp

。不知道大家是否能理解?

*號是一個萬用字元號

所有以 .tmp 為副檔名的檔案

有關係統變數和萬用字元後面還會詳細說明

隱藏執行的命令,只顯示結果。

例子:

echo 條友們好

@echo 條友們辛苦了

pause

Dos 命令進階(三)---批處理(上)

遮蔽回顯命令的演示

二. 特殊字元詳解

命令連線符號,就是將兩個命令連續執行,不用分行

例子:

dir c:\ & dir d:\ & dir e:\

Dos 命令進階(三)---批處理(上)

多命令同行執行連線符 &

1、@

連線兩個命令,

2、&

說白點兒就是,

3、&&

高一學的邏輯運算知識在這裡用上了, 這叫

當&&前的命令成功時,才執行&&後的命令

兩個條件有一個為假, 整個都為假了, 則就沒必要執行下去了, &&前面那條指令失敗了, &&後面的指令就不會再執行了。

例子:

dir x:\ && dir d:\

Dos 命令進階(三)---批處理(上)

一假則假

&&前面的命令先執行成功才能執行 &&後面的命令, 如果前面命令執行失敗, 後面就不執行了.

命令連線符號,表示

一假則假,

4、||

。 邏輯上的叫

上一條命令執行失敗後,才執行||符號後的內容

例子:

dir x: || dir c:\

Dos 命令進階(三)---批處理(上)

|| 前面的失敗了才執行 || 後的指令

如果執行: dir c:\ || dir d:\ 呢, 則只執行 dir c:\ , dir d:\ 這條指令就不會執行, 這一條希望條友能親自嘗試一下看。

這個命令跟上一個相反, 如果 || 前的執行成功, 則 || 後面的命令就不執行了

一真則真

,就是

5、|

管道是一種

管道符號

, 就是

將上一個命令的輸出的內容,作為下一個命令的輸入內容

這個符號 “|” 就好似一條管理, 將前的送到後面去, 發揮你屌炸天的想象力吧, 嘿嘿嘿

例子:

netstat -an | find “135”

為了具體我先分別執行 netstat -an 和 find “135” , 而後的 find “135” 意思是在某檔案中查詢字串135, 在哪個檔案中呢, 這裡沒有給, 所以單獨執行 find “135” 鐵定會執行失敗的, 看下圖:

Dos 命令進階(三)---批處理(上)

單獨執行 netstat

Dos 命令進階(三)---批處理(上)

find命令, 在某檔案中檢視指定的字串

Dos 命令進階(三)---批處理(上)

netstat 與 find 透過管道命令配合執行

很形象的說法

重定向符號,將命令的輸出結果重定向到其後面的裝置中去,

將 | 前面的指令執行後的輸出結果暫存在記憶體中, 作為 | 後面指令執行的輸入內容

例子:

dir c:\ > cdir。txt

dir c:\ > d:\cdir。txt

Dos 命令進階(三)---批處理(上)

重定義符號 > 的使用

6、>

重定向符號,將命令的輸出結果重定向到其後面的裝置中去,

後面的裝置中的內容被覆蓋

該符號的作用與前面那個

7、>>

符號的

後面的裝置中的內容會被增加在後面

這個

>

符號的作用是向一個檔案中追加內容, 如果該檔案不存在則建立, 如果存在, 則在檔案已有內容的後面

區別是:

要輸出的內容。

>>

符號的作用是, 新建一個檔案, 並向該檔案中新增要輸出的內容, 如果指定的檔案已存在, 則

追加

檔案內容

>

要輸出的內容。

例子:

echo 第一行內容 >> test。txt

echo 第二行內容 >> test。txt

echo 第三行內容 > test。txt

Dos 命令進階(三)---批處理(上)

兩個重定向符號的對比

先清空

跳脫字元, ^是對特殊符號<,>,&的前導字元,在命令中他將以上3個符號的特殊功能去掉,僅僅只把他們當成符號而不使用他們的特殊意義。

Dos 命令進階(三)---批處理(上)

跳脫字元的作用演示

再新增

這個百分號嚴格來說是算不上命令的,它只是

8、^

而已(多個%一起使用的情況除外)。

引用變數用%var%,呼叫程式

9、% 批處理變數引導符

用%1至%9等等

批處理中的引數

%0 指批處理檔案本身,包括完整的路徑和副檔名

Dos 命令進階(三)---批處理(上)

引數 %0的用處演示

Dos 命令進階(三)---批處理(上)

%0 引數在批處理中的演示效果

%1 第一個引數

%9 第九個引數

Dos 命令進階(三)---批處理(上)

%1——%9這是9個外部引數, 多於9個時就使用%*

Dos 命令進階(三)---批處理(上)

計算幾個數字的和並列印

%* 從第一個引數開始的所有引數

Dos 命令進階(三)---批處理(上)

匹配所有外部引數%*

外部引數

,以達到批處理本身迴圈的目的,也可以複製檔案自身等等。

例:最簡單的複製檔案自身的方法

程式碼d:\第五個例項。bat:

copy %0

這段程式碼的意思就是 複製指令碼自身到當前目錄下。 這裡省略一個點, 完整的寫是:

copy %0

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %* 為命令列傳遞給批處理的引數

引數%0具有特殊的功能,可以呼叫批處理自身

先切換到與指令碼檔案所在目錄不同的目錄中,比如C盤下, 再執行:

d:\第五個例項。bat

Dos 命令進階(三)---批處理(上)

.

新增行內註釋

如果條友看了我前面講的那CD 命令應該知道 . 代表當前目錄, .. 代表父級目錄, 所以就有 cd .. 就是返回上級目錄.

(可以用作行內註釋,不能出現重定向符號和管道符號)

為什麼這樣呢?此時“註釋內容”其實被當作變數,其值是空的,故只起註釋作用,

小技巧:

%註釋內容%

萬用字元號,表示

不過這種用法容易出現語法錯誤,一般不用(等於沒說)。

例子:

dir c:\windows\*。log

del /s /q /f c:\windows\*。log 強制刪除

10、*

所有以 。log 結尾的檔案。

Dos 命令進階(三)---批處理(上)

萬用字元 * 號的應用例項

任意個任意字元

萬用字元號,表示

當前目錄及其子目錄下

例子:

dir c:\?indows 列出C:\ 目錄下所有任意以單個字元開頭並以 indows 結尾名稱的檔案列表

如果 C:\下有Aindows , Bindows, HEindows 三個資料夾, 那麼 ?indows 匹配 Aindows , Bindows 兩個檔案, 但HEindows卻不匹配, 因為它是以 HE兩個字元開頭的檔案。

Dos 命令進階(三)---批處理(上)

萬用字元 ? 的操作例項

11、?

表示

任意一個字元

例子:

dir 。\ , dir 。 , dir 三條指令是同樣的執行結果, 如果是當前目錄, 點這個符號可以省略

Dos 命令進階(三)---批處理(上)

點符號在CMD中的應用

Dos 命令進階(三)---批處理(上)

點符號在CMD中的應用

12、.

表示

當前目錄

例子:

dir 。。\ 檢視父級目錄下的檔案列表

Dos 命令進階(三)---批處理(上)

兩點表示上一級目錄或父級目錄

13、..

界定符號,

上一級目錄(也稱父級目錄)

例子:

dir “c:\Documents and settings” 這個界定符在WIN7中可以不用, 但在XP系統中還是會要用到的。 當你要切換的目錄名中有空格時, 請使用 雙引號 括起來, 否則會報錯。 建議需要不需要都使用這個界定符, 應該更保險一些。

Dos 命令進階(三)---批處理(上)

目錄名中帶空格須使用雙引號進行包括

14、" "

通常用來引用有空格的目錄

,表示後面的內容是一個標籤名

例子:

@echo off

:again

echo 誠心感謝條碼們對小編的關注與支援!

pause

goto again

Dos 命令進階(三)---批處理(上)

標籤跳轉操作

15、:

某些時候可以

標籤定位符號

例子:

echo,

dir,c:\ 這個例子的意思太白了, 小編就不演示截圖了。

16、,

分號,當

當空格來使用

例子:

dir c:\;d:\ 如果你想同時檢視 C:\, D:\ 兩個目錄下的檔案列表, 就可以一個DIR 命令, 後跟多個要檢視的目錄路徑, 相互之間以分號隔開就可以了。

17、;

表示後面的語句是

命令相同時,可以將不同目標用來隔離

。相當於c++中的“//”

例子:

@echo off

::顯示c盤根目錄檔案。 (

18、::

dir c:\*。txt

pause

Dos 命令進階(三)---批處理(上)

註釋符的使用

註釋

將要執行的程式碼存在一個文字test。txt 中:

d:

cd D:\我的頭條20171127

dir

pause

執行命令:

cmd。exe < test。txt

Dos 命令進階(三)---批處理(上)

輸入重定向符號的使用

註釋就是說明性的文字內容, 不作為指令執行

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。

Dos 命令進階(三)---批處理(上)

邏輯運算子的使用

19. < 輸入重定向

@echo off

ping /n www。qq。com || shutdown /r /t 180 /c 命令執行失敗了,180秒後重啟! && exit

%0

這條批處理檔案主要是用ping命令來判斷網路的連通性,當我們的ping命令執行成功後就不會執行它後面的內容。那假如沒有ping通的話就執行它後面的相關命令了。

%0它表示的就是

20. 邏輯運算子

我們的批處理程式。

綜合例項:

如果不小心進入倒計時關機狀態, 請執行 shutdown -a 指令來取消哦。

Dos 命令進階(三)---批處理(上)

開啟執行例項

Dos 命令進階(三)---批處理(上)

我關閉了執行視窗或CTRL+C, 然後就。。。

Dos 命令進階(三)---批處理(上)

取消關機狀態

來看一下shutdown命令的幫助

Dos 命令進階(三)---批處理(上)

shutdown /? 幫助文件檢視

Dos 命令進階(三)---批處理(上)

如何判斷一條指令是否執行成功

無限迴圈的執行