Dos 命令進階---批處理(上)
一. 批處理介紹
1、批處理的概述:
批處理,也稱為批處理指令碼,英文譯為BATCH,批處理檔案字尾BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:
(1)每一行可視為一個命令,
(2)每個命令裡可以含多條子命令,
(3)從第一行開始執行,直到最後一行結束,它執行的平臺是DOS。
批處理有一個很鮮明的特點:
使用方便、靈活,功能強大,自動化程度高。
批處理檔案的副檔名是BAT或者CMD,把任何一批命令放在有該副檔名的檔案裡,執行的時候都會按順序逐條的執行, 在以後學習內容中, 還可以在其中加入一些邏輯判斷的語句,即讓裡面的命令在滿足一定條件時執行指定的命令。
2、舉例說明:
第一步:建立批處理檔案
新建一個文字文件,將名字改為 第一個例項.bat
第二步:寫程式碼
右鍵"第一個例項.bat"檔案,選中“編輯”,然後寫程式碼。程式碼如下:
@echo off
echo 非常感謝所有條友的關注與支援!
echo 感激不已, 惟有認真, 毫無保留的分享.
pause
第三步:儲存後,雙擊“第一個例項.bat”執行。
簡單瞭解程式碼意思:
@echo off 這一句是關閉回顯(預設回顯是開啟的),如果沒有這一句的話會顯示一些比較礙眼的資訊。
echo 非常感謝所有條友的關注與支援!
echo 感激不已, 惟有認真, 毫無保留的分享.
上面兩條指令的結果是在螢幕上列印echo後面的內容(如上圖例指令碼執行的結果)
pause 這個pause,英文是暫停的意思,讓指令碼執行完上面的命令後等使用者確認退出
詳細解釋:
(1)、echo off 關閉回顯(即批處理中的命令語句不會顯示)
(2)、echo on 打開回顯
(3)、符號“@”的意思是不顯示它後面的命令語句,只顯示命令執行的結果!
(4)、echo 用於顯示
echo命令的作用有兩個,一個時在CMD上顯示一行內容,
如:echo 非常感謝所有條友的關注與支援!!
還有一個是顯示關閉命令的回顯:echo off
我們在echo off命令前加一個“@”符號是為了不讓echo off這條命令本身顯示出來,可以讓批處理達到整體的美觀!
如測試以下程式碼:
@echo off
echo 你好
echo 你好
pause
再次解釋一下:pause命令就是暫停的意思,防止批處理執行完畢後直接退出,執行到pause命令時CMD就會顯示
“請按任意鍵繼續”這一行!
3、基礎知識補充
如果大家對那個DOS命令不明白,可以通過輸入“命令”/? 或 執行 "help 命令名"
4、具體例項分析
@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 emp*.*" >nul 2>nul
del /s /f /q"%userprofile% ecent*.*" >nul 2>nul
del /s /f /q"%userprofile%cookies*.*" >nul 2>nul
del /s /f /q "%userprofile%localsettingshistory*.*" >nul 2>nul
del /s /f /q "%windir% emp*.*">nul 2>nul
del /s /f /q"%windir%prefetch*.*" >nul 2>nul
echo 垃圾檔案清理完畢!
echo. & pause
分析例項程式碼:
有了前面幾篇基礎命令的學習, 想必條友已經知道這個 del 命令是怎麼個意思了吧, 它就是刪除檔案的命令.
del /s /f /q %systemdrive%*.tmp >nul 2>nul 取這一行程式碼來說明一下
/s 引數是刪除當前目錄及其子目錄下的指定檔案
/f 表示刪除沒商量,強制刪除
/q 表示靜默執行, 不提示確認資訊.
%systemdrive% 這個是系統環境變數, 你在CMD視窗執行 echo %systemdrive% 看是什麼結果
>nul 2>nul 這個呢? 它的意思是將命令執行時的資訊或者錯誤, 還是圖解一下吧.
注:這是一個用來清除系統垃圾檔案的批處理程式。命令其實也是很簡單的,主要是用到“del”命令和相關的引數來實現, 有關“del”命令的引數大家可以參考“del /?”來得到詳細的幫助。
另外還有“%systemdrive%、%userprofile%”。那麼它們是什麼呢,這些其實是系統變數,也就是系統目錄的另一種表示形式而已。我們可以通過輸入“echo %userprofile%”來看看它代表的是系統中的那個目錄。那麼其它的也是一樣
*.tmp的意思是,這個*號是一個萬用字元號,它表示的是所有以 .tmp 為副檔名的檔案。不知道大家是否能理解?
有關係統變數和萬用字元後面還會詳細說明
二. 特殊字元詳解
1、@
隱藏執行的命令,只顯示結果。
例子:
echo 條友們好
@echo 條友們辛苦了
pause
2、&
命令連線符號,就是將兩個命令連續執行,不用分行
例子:
dir c: & dir d: & dir e:
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" 鐵定會執行失敗的, 看下圖:
6、>
重定向符號,將命令的輸出結果重定向到其後面的裝置中去,後面的裝置中的內容被覆蓋
例子:
dir c: > cdir.txt
dir c: > d:cdir.txt
7、>>
重定向符號,將命令的輸出結果重定向到其後面的裝置中去,後面的裝置中的內容會被增加在後面
該符號的作用與前面那個 > 符號的區別是: 這個 >> 符號的作用是向一個檔案中追加內容, 如果該檔案不存在則建立, 如果存在, 則在檔案已有內容的後面追加要輸出的內容.
而 > 符號的作用是, 新建一個檔案, 並向該檔案中新增要輸出的內容, 如果指定的檔案已存在, 則先清空檔案內容再新增要輸出的內容.
例子:
echo 第一行內容 >> test.txt
echo 第二行內容 >> test.txt
echo 第三行內容 > test.txt
8、^
轉義字元, ^是對特殊符號<,>,&的前導字元,在命令中他將以上3個符號的特殊功能去掉,僅僅只把他們當成符號而不使用他們的特殊意義。
9、% 批處理變數引導符
這個百分號嚴格來說是算不上命令的,它只是批處理中的引數而已(多個%一起使用的情況除外)。
引用變數用%var%,呼叫程式外部引數用%1至%9等等
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %* 為命令列傳遞給批處理的引數
%0 指批處理檔案本身,包括完整的路徑和副檔名
%1 第一個引數
%9 第九個引數
%* 從第一個引數開始的所有引數
引數%0具有特殊的功能,可以呼叫批處理自身,以達到批處理本身迴圈的目的,也可以複製檔案自身等等。
例:最簡單的複製檔案自身的方法
程式碼d:第五個例項.bat:
copy %0
這段程式碼的意思就是 複製指令碼自身到當前目錄下. 這裡省略一個點, 完整的寫是:
copy %0 .
如果條友看了我前面講的那CD 命令應該知道 . 代表當前目錄, .. 代表父級目錄, 所以就有 cd .. 就是返回上級目錄.
先切換到與指令碼檔案所在目錄不同的目錄中,比如C盤下, 再執行:
d:第五個例項.bat
小技巧:新增行內註釋
%註釋內容%(可以用作行內註釋,不能出現重定向符號和管道符號)
為什麼這樣呢?此時“註釋內容”其實被當作變數,其值是空的,故只起註釋作用,不過這種用法容易出現語法錯誤,一般不用(等於沒說)。
10、*
萬用字元號,表示任意個任意字元
例子:
dir c:windows*.log
del /s /q /f c:windows*.log 強制刪除當前目錄及其子目錄下所有以 .log 結尾的檔案.
11、?
萬用字元號,表示任意一個字元
例子:
dir c:?indows 列出C: 目錄下所有任意以單個字元開頭並以 indows 結尾名稱的檔案列表
如果 C: 下有Aindows , Bindows, HEindows 三個資料夾, 那麼 ?indows 匹配 Aindows , Bindows 兩個檔案, 但HEindows卻不匹配, 因為它是以 HE兩個字元開頭的檔案.
12、.
表示當前目錄
例子:
dir . , dir . , dir 三條指令是同樣的執行結果, 如果是當前目錄, 點這個符號可以省略
13、..
表示上一級目錄(也稱父級目錄)
例子:
dir .. 檢視父級目錄下的檔案列表
14、" "
界定符號,通常用來引用有空格的目錄
例子:
dir "c:Documents and settings" 這個界定符在WIN7中可以不用, 但在XP系統中還是會要用到的. 當你要切換的目錄名中有空格時, 請使用 雙引號 括起來, 否則會報錯. 建議需要不需要都使用這個界定符, 應該更保險一些.
15、:
標籤定位符號,表示後面的內容是一個標籤名
例子:
@echo off
:again
echo 誠心感謝條碼們對小編的關注與支援!
pause
goto again
16、,
某些時候可以當空格來使用
例子:
echo,
dir,c: 這個例子的意思太白了, 小編就不演示截圖了.
17、;
分號,當命令相同時,可以將不同目標用來隔離
例子:
dir c:;d: 如果你想同時檢視 C:, D: 兩個目錄下的檔案列表, 就可以一個DIR 命令, 後跟多個要檢視的目錄路徑, 相互之間以分號隔開就可以了.
18、::
表示後面的語句是註釋。相當於c++中的"//"
例子:
@echo off
::顯示c盤根目錄檔案. (註釋就是說明性的文字內容, 不作為指令執行)
dir c:*.txt
pause
19. < 輸入重定向
將要執行的程式碼存在一個文字test.txt 中:
d:
cd D:我的頭條20171127
dir
pause
執行命令:
cmd.exe < test.txt
20. 邏輯運算子
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.
綜合例項:
@echo off
ping /n www.qq.com || shutdown /r /t 180 /c 命令執行失敗了,180秒後重啟! && exit
%0
這條批處理檔案主要是用ping命令來判斷網路的連通性,當我們的ping命令執行成功後就不會執行它後面的內容。那假如沒有ping通的話就執行它後面的相關命令了。
%0它表示的就是無限迴圈的執行我們的批處理程式。
注意: 如果不小心進入倒計時關機狀態, 請執行 shutdown -a 指令來取消哦.
來看一下shutdown命令的幫助
相關推薦
Dos 命令進階---批處理(上)
批處理指令碼講解思路 一. 批處理介紹 1、批處理的概述: 批處理,也稱為批處理指令碼,英文譯為BATCH,批處理檔案字尾BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了: (1)每一行可視為一個命令, (2)每個命令裡可以含多條子命令, (3)從第一行開始執行,直到最後一行結束,它
Dos 命令進階——批處理(下)
for命令講解思路圖 FOR命令的作用主要是用來處理文字內容。 可以開啟cmd輸入"for /?" 來看下它的幫助文件 這裡羅列出for命令的四個引數 /F,/D,/R,/L . 當然這些引數也是可以不加的(引數不區分大小寫) 第一部分: 下面我們跑幾個例子, 先看沒有加任何引數的. 示例1: @echo
dos命令列或批處理中變數一個百分號和兩個百分號的區別
for 命令的基本語法如下: 在cmd視窗中:for %I in (command1) do command2 在批處理檔案中:for %%I in (command1) do command2 上面的變數有%I和%%I兩種,分別是一個百分號和兩個
linux命令進階
內核版本 顯示 全部 gen int file 字符 str 出現次數 1) 文件內全部替換: :%s#abc#123#g (如文件內有#,可用/替換,:%s/abc/123/g) --註:把abc替換成123 (或者: %s/str1/str2/g 用str2
linux命令-進階1
ont log 查看系統信息 安裝 linu lin .html 進階 post Linux查看系統信息的一些命令及查看已安裝軟件包的命令 centos下如何查看某個軟件是否安裝http://www.landui.com/help/show-3959.html lin
C#操作DOS命令,並獲取處理返回值
getc current reat 進程 是否 tor 不顯示 write card // /*---------------- // // 文件名:Method // // 文件功能描述: // // 使用 ADB 來進行安卓設備與PC端之間的文件交互,具體adb命
洗禮靈魂,修煉python(16)--列表進階話題—>上節作業講解+copy模塊
ima 參數 span 分片 斐波那契數 介紹 生成器 strong 列表解析 上節課後作業: 1.使用列表解析輸出結果:[(0,0),(0,2),(2,0),(2,2)] 方法1: 方法2: 方法3: 2.使用列表生成器打印斐波那契數列 3.使用列表解析生
產融結合的七個進階形態(上)
產融結合產融結合並不是簡單地產業資本和金融資本結合就可以產生有效的經濟效益,如何產生有效的產融結合,我們應當使金融資本去促使產業資本提高,產生經濟效益,讓產業資本的提高去帶動金融資本的升值,兩者屬於螺旋上升的過程。產融結合模式有7個進階形態,不斷進階上升。單一融資渠道管理企業產融結合的初始形態,企業最初的發展
Linux常用命令進階
cto 寫法 修改 oss roo nag image blob spa cd 切換目錄cd - 切換到上一次的目錄ls 列出目錄及文件(用最快的方式找出最新創建的文件及目錄)ls -r (reverse)倒序排序ls -t 按修改時間排序ls -lrt 最新創建的文
shell腳本進階篇(上)
col oss family 指定 -o for循環 用戶輸入 span 創建用戶 shell腳本是我們學習運維的難點,本篇內容簡單舉例shell腳本的進階上篇,有任何技術上的指導,知識上的不足都歡迎指出點明。 流程控制過程式編程語言: 順序執行 選擇執行 循環執行條
Python進階-----異常處理
一、什麼是異常 異常就是程式執行時發生錯誤的訊號,在程式出現錯誤時,則會產生一個異常,若程式沒有處理它,則會丟擲該異常,程式的執行也隨之終止,在python中,錯誤有如下兩種: 1、語法錯誤 即程式碼語句不符合python語法規範,比如if語句缺少冒號,print語句缺少句號等。這種語法錯誤會被
Python常忘的進階知識(上)
0.目錄 1.面向物件 1.1 函式與方法 1.2 類變數與例項變數 1.3 例項方法、類方法、靜態方法 1.4 公開和私有:沒有什麼是不能訪問的 1.5 繼承 2.正則表示式 2.1 Python內建函式與正則表示式 2.2 元字元、字符集、概括字符集 2.3 貪婪與非
php進階——01 檔案上傳
php.ini相關引數 file_uploads 是否允許PHP上傳檔案,預設為ON。 upload_tmp_dir 上傳檔案在處理之前,必須先上傳到伺服器上的某個臨時資料夾; 此引數就是決定臨時目錄的路徑,此目錄需要有讀寫許可權。 一般
JAVA執行cmd命令(包含執行批處理檔案)
如下是java執行cmd命令的程式碼,以作記錄: 內容包括執行單個cmd命令或者呼叫bat檔案的方法; import java.io.BufferedReader; import java.io.InputStreamReader; /** * 執行wind
shell命令進階【Linux-shell基本操作】
shell 1.萬用字元: 萬用字元: *:表示任意長度的字串,如:ls ~/* #列舉家目錄下所有檔案或子目錄 ?:表示任意一個字元,如: ls
Redis 基礎命令--進階篇
今天又掃了一章《Redis入門指南》第4章 進階,被 sort 指令卡了好久,所以我會重點講解 sort 指令。 第一個知識點--事務 這個在關係型資料庫裡經常聽見--一組命令的集合,其中的命令要不全部執行,要不全部不執行,在 redis 裡面也有這樣的操作命令。 基本語法
學習springBoot 進階AOP處理請求(五)
AOP概述 如圖中顯示,當我們請求的操作繼續往下走的時候都是相類似的, 那這個時候我們就可以把具體的業務操作程式碼提取出來作為公共的操作,這樣就有了面向切面程式設計AOP 下面來舉例子說明 如何AOP統一處理請求日
Linux之命令進階
Linux系統的啟動過程 1.開機自檢 BIOS2.MBR引導3.GRUB選單4.載入核心5.執行init程序6.從/etc/inittab讀取執行級別7.根據/etc/rc.sysinit 初始化系統(設定主機名 設定ip)8.根據執行級別啟動對應的軟體(開機自啟動軟體)9.執行mingetty顯示登入介
SpringBoot進階之檔案上傳(單檔案上傳/多檔案上傳)
1.單檔案上傳 private String uploadPath="D:\\tomcat\\apache-tomcat-7.0.81-windows-x64\\apache-tomcat-7
二、Linux——基本命令進階
【1】使用者管理 sudo adduser u1 //新增使用者 sudo deluser --remove-name u1 //刪除使用者 sudo user