大家好,我是xiezhr。
1 前言
開啟歷史文章一看,上一篇文章是2021年3月20號更新的,又拖更了。
一個原因是,最近工作上真的挺忙的,有比較著急需要加班加點趕的需求。好在清明前算是把比較著急的改好了。本來安排清明也是要加班的,但是真的加不動了。(連著加班真的挺影響效率的,適當休息是非常有必要的~)
以至於一週都是在連軸轉,需求改好更新之後也是心驚膽戰的,生怕哪個地方出現問題,大腦一度都處於緊繃狀態。
其次呢寫一篇公眾號文章還是挺費時費力的,又不想草率的更新一篇上去,這樣還不如不寫。
2 批處理簡介
- 批處理(Batch),也稱為批處理指令碼,副檔名為.bat或者.cmd。
- 類似於linux或Unix中的shell指令碼。
- 包含一系列 DOS命令,通常用於自動執行重複性任務。只需我們雙擊批處理檔案便可執行任務,而無需重複輸入相同指令。
- 批處理檔案可以極大程度地節省時間,在應對重複性工作時尤其有效,熟練使用可以簡化很多重複工作,提高工作效率。
3 批處理檔案建立
-
用記事本或者各種文字編輯器建立一個字尾為.bat的檔案即可
-
一般情況下每行一條命令,方便閱讀方便書寫。當然也可以用(&、&&、|、||)分割書寫到一行,但不建議這樣
-
當像遇到像程式語言那樣if、for 等命令時候,系統會掃描整個批處理,然後從第一行開始順序向下逐句執行,直到程式結尾或者遇到exit或意外退出
廢話不多說,直接上一個例子,感受下批處理的魅力 O(∩_∩)O哈哈~
下面是一個以批處理建立的計算器小例子,開啟xiezhr.bat 後效果如下
4 批處理常用符號
4.1 @
回顯遮蔽
① 語法
@
② 舉例
rem 從本行開始關閉回顯。一般批處理第一行都是這個
@echo off
4.2 重定向1 >與>>
輸出重定向命令 >清除檔案中原有的內容後再寫入 >>追加內容到檔案末尾,而不會清除原有的內容。
主要將本來顯示在螢幕上的內容輸出到指定檔案中,指定檔案如果不存在,則自動生成該檔案
① 語法
[p讀取資料的位置] > [寫入資料的位置]
[p讀取資料的位置] >> [寫入資料的位置]
② 舉例
rem 將dir輸出stdin重定向到檔案Dirlist.txt,> 每次檔案都會被重新建立,>> 則是檔案追加
dir 1 > dirlist.txt
dir > dirlist.txt
dir 1>> dirlist.txt
dir >> dirlist.txt
rem 將列印資訊重定向到檔案,使用>每次檔案會被重新建立,>> 則是檔案追加
echo abc>log.txt
echo abc>>log.txt
rem 將所有的IP資訊存入檔案,使用>每次檔案會被重新建立,>> 則是檔案追加
ipconfig>log.txt
ipconfig>>log.txt
rem 阻止輸出顯示,將預設輸出位置(控制程式碼)重定向為nul 使用>每次檔案會被重新建立,>> 則是檔案追加
echo invalie prompt >nul
echo invalie prompt 1>>nul
4.3 重定向2 <
要從鍵盤或裝置重定向命令輸入
① 語法
[相應處理] < [讀取資料的位置]
② 舉例
rem 重定向輸入是來自檔案,並將輸入的檔案內容按首字母排序
sort<xiezhr.txt
rem 將從stdin輸入重定向為從檔案輸入,只輸入檔案首行內容,stdin(0)是預設輸入,可以省略
set /p var=0<xiezhr.txt
set /p var=<xiezhr.txt
echo %var%
4.4 管道符號 |
傳遞作用,將前面一條命令的執行結果傳遞給後面一條命令繼續執行
① 語法
[]|[]
② 舉例
rem 將dir的輸出作為sort的輸入
dir | sort
rem 查詢當前目錄中包含".txt"的檔名
dir | find ".txt"
4.5 轉義符 ^
用在特殊符號之前,取消特殊字元的作用
① 語法
^ [特殊字元]
② 舉例
rem &將作為字元輸出
echo 非常^&批處理
4.6 邏輯命令符 &、&&、||
& 無論前面的命令是否成功執行 都執行後面的
&& 當前面的命令成功執行 再執行後面的命令 相當於邏輯與運算
|| 當前面的命令沒有成功執行 則執行後面的命令 可以作判斷選擇用 相當於邏輯或運算
① 語法
[命令1]&[命令2]
[命令1]&&[命令2]
[命令1]||[命令2]
② 舉例
rem &
rem 雖然沒有成功到“個人部落格” 但還是會執行echo 命令,輸出“字元中含有xiezhr”
echo xiezhrspace.cn | find "個人部落格" & echo 字元中含有xiezhr
rem &&
rem 沒有成功到“個人部落格” ,所以echo命令不會成功執行
echo xiezhrspace.cn | find "個人部落格" && echo 字元中含有xiezhr
rem ||
rem 在xiezhrspace.cn中查詢字元"個人部落格",如果沒有找到則繼續執行後面的命令,即在螢幕中顯示"字元中沒有xiezhr",如果找到了,也就是如果前面是xiezhrspace.cn的話則停止繼續執行||後面的命令,而是在螢幕中直接顯示"xiezhrspace.cn".
echo xiezhrspace.cn | find "個人部落格" || echo 字元中沒有xiezhr
echo xiezhrspace.cn | find "xiezhr" || echo 字元中含有xiezhr
5 常用批處理
注意:在cmd中輸入命令+/?即可檢視該命令的幫助資訊。如cd /?
5.1 資料夾管理
5.1.1 cd
顯示當前目錄名或改變當前目錄
① 語法
cd rem 顯示當前路徑
cd rem 進入根目錄
cd /d d:sdk rem 變更磁碟機代號目錄
② 舉例
rem 進入根目錄
C:\Users\xiezhr>cd
C:\Users\xiezhr
rem 顯示當前目錄
D:\>cd
D:\
rem 切換到F:\xiezhrspace\hexo-xiezhrblog 目錄
C:\Users\ye.ff>cd F:\xiezhrspace\hexo-xiezhrblog
F:\xiezhrspace\hexo-xiezhrblog>
5.1.2 md
建立目錄
①語法
MKDIR [drive:]path
MD [drive:]path
②舉例
rem 在D盤下建立xiezhr目錄
md d:xiezhr
5.1.3 rd
刪除一個目錄
①語法
rd [directoryname]
② 舉例
rem 刪除d盤xiezhr目錄
rd d:xiezhr
5.1.4 dir
顯示目錄中的檔案和子目錄列表
① 語法
DIR [drive:][path][filename]
指定要列出的驅動器、目錄和/或檔案。
②舉例
dir rem 顯示當前目錄中的檔案和子目錄
dir /a rem 顯示當前目錄中的檔案和子目錄,包括隱藏檔案和系統檔案
dir c: /a:d rem 顯示 C 盤當前目錄中的目錄
dir c: /a:-d rem 顯示 C 盤根目錄中的檔案
dir c: /b/p rem /b只顯示檔名,/p分頁顯示
dir *.exe /s rem 顯示當前目錄和子目錄裡所有的.exe檔案
5.1.5 tree
以圖形顯示驅動器或路徑的資料夾結構
① 語法
TREE [drive:][path] [/F] [/A]
/F 顯示每個資料夾中檔案的名稱。
/A 使用 ASCII 字元,而不使用擴充套件字元。
② 舉例
rem 顯示D盤的檔案目錄結構
tree d:
5.1.6 path
為可執行檔案顯示或設定一個搜尋路徑
① 語法
PATH [[drive:]path[;...][;%PATH%]
PATH ;
鍵入 PATH 但不加引數,顯示當前路徑。
將 %PATH% 包括在新的路徑設定中會將舊路徑附加到新設定
② 舉例
::設定要永久加入到path環境變數中的路徑
@echo off
set My_PATH=D:\AppFolder
set PATH=%PATH%;%My_PATH%
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v "Path" /t REG_EXPAND_SZ /d "%PATH%" /f
exit
::設定要臨時加入到path環境變數中的路徑
@echo off
set My_PATH=D:\AppFolder
set PATH=%PATH%;%My_PATH%
pause
5.1.7 xcopy
複製檔案和目錄樹
① 語法
XCOPY source [destination][引數]
② 舉例
rem 複製 d:xiezhr 資料夾、所有子資料夾和檔案到 e: ,覆蓋已有檔案
rem 加 /i 表示如果 e: 沒有 xiezhr 資料夾就自動新建一個,否則會有詢問
xcopy d:xiezhr e:xiezhr /s/e/i/y
5.2 檔案管理
5.2.1 type
顯示文字檔案的內容
① 語法
TYPE [drive:][path]filename
② 舉例
rem 顯示指定檔案的內容(下面是顯示d盤目錄下xiezhr.txt檔案的內容)
type d:xiezhr.txt
C:\Users\xiezhr>type d:xiezhr.txt
xiezhr的個人公眾號:xiezhrspac
rem 顯示當前目錄裡所有.txt檔案的內容
type *.txt
5.2.2 copy
將一份或多份檔案複製到另一個位置
① 語法
COPY [source] [destination]
② 舉例
rem 複製 c:test.txt 檔案到 d: ,並重新命名為 test.bak
copy c:xiezhr.txt d:xiezhr.bak
rem 從螢幕上等待輸入,按 Ctrl+Z 結束輸入,輸入內容存為test.txt檔案
rem con代表螢幕,prn代表印表機,nul代表空裝置
copy con xiezhr.txt
rem 合併 1.txt 和 2.txt 的內容,儲存為 3.txt 檔案 如果不指定 3.txt ,則儲存到 1.txt
copy 1.txt + 2.txt 3.txt
rem 複製檔案到自己,實際上是修改了檔案日期
copy test.txt +
5.2.3 del
刪除一個或數個檔案
① 語法
del [filename]
filename 指定一個或多個檔案或者目錄列表。
萬用字元可用來刪除多個檔案。
如果指定了一個目錄,該目錄中的所
有檔案都會被刪除。
② 舉例
rem 刪除指定檔案,不能是隱藏、系統、只讀檔案
del d:xiezhr.txt
rem 刪除 d:xiezhr 資料夾裡面的所有檔案,包括隱藏、只讀、系統檔案,不包括子目錄
del /q/a/f d:xiezhr*.*
rem 刪除 d:xiezhr 及子資料夾裡面的所有檔案,包括隱藏、只讀、系統檔案,不包括子目錄
del /q/a/f/s d:xiezhr*.*
5.2.4 move
移動檔案並重新命名檔案和目錄
①語法
move [source] [destination]
② 舉例
rem 將D盤xiezhr.txt 移動到f盤
move xiezhr.txt f:
rem 將xiezhr.txt重新命名為xiezhrspace.txt
move xiezhr.txt xiezhrspace.txt
5.2.5 ren
重新命名檔名
①語法
REN [drive:][path]filename1 filename2.
②舉例
rem 將xiezhr資料夾重新命名為xiezhrspace
ren d:xiezhr xiezhrspace
5.2.6 replace
替換檔案
① 語法
REPLACE [drive1:][path1]filename [drive2:][path2] [/A] [/P] [/R] [/W]
[drive1:][path1]filename 指定原始檔。
[drive2:][path2] 指定要替換檔案的目錄
②舉例
rem 新增新檔案到目標目錄: 將 xiezhr.bat 檔案新增到 E 盤目錄下
replace /A C:\xiezhr.bat E:\
rem 提示替換檔案到目標目錄: 將 xiezhr.txt 文字檔案替換到 temp 目錄中去,( temp 目錄必須有 xiezhr.txt 文字檔案)
replace /P C:\xiezhr.txt E:\temp
5.2.7 attrib
顯示或更改檔案屬性
① 語法
ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [+I | -I]
[drive:][path][filename] [/S [/D] [/L]]
+ 設定屬性。
- 清除屬性。
R 只讀檔案屬性。
A 存檔檔案屬性。
S 系統檔案屬性。
H 隱藏檔案屬性。
I 無內容索引檔案屬性。
X 無清理檔案屬性。
V 完整性屬性。
[drive:][path][filename]
指定 attrib 要處理的檔案。
/S 處理當前資料夾
及其所有子資料夾中的匹配檔案。
/D 也處理資料夾。
/L 處理符號連結和
符號連結目標的屬性
② 舉例
rem 檢視d盤xiezhr目錄下各個檔案屬性
D:\xiezhr>attrib /s
A D:\xiezhr\logo.png
A D:\xiezhr\公眾號-xiezhrspace.txt
rem 設定logo.png檔案的屬性為系統實現、隱藏屬性、只讀屬性
D:\xiezhr>attrib +s +h +r logo.png
D:\xiezhr>attrib /s
A SHR D:\xiezhr\logo.png
A D:\xiezhr\公眾號-xiezhrspace.txt
rem 設定logo.png 恢復原來屬性
D:\xiezhr>attrib -s -h -r logo.png
D:\xiezhr>attrib /s
A D:\xiezhr\logo.png
A D:\xiezhr\公眾號-xiezhrspace.txt
rem
5.2.7 find
① 語法
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]
/V 顯示所有未包含指定字串的行。
/C 僅顯示包含字串的行數。
/N 顯示行號。
/I 搜尋字串時忽略大小寫。
/OFF[LINE] 不要跳過具有離線屬性集的檔案。
"string" 指定要搜尋的文字字串。
[drive:][path]filename
指定要搜尋的檔案
② 舉例
rem 在 d:/xiezhr/xiezhr.txt 檔案裡查詢含 "公眾號:xiezhrspace" 字串的行如果找不到,將設 errorlevel 返回碼為1
C:\Users\xiezhr>find "公眾號:xiezhrspace" d:/xiezhr/xiezhr.txt
---------- D:/XIEZHR/XIEZHR.TXT
公眾號:xiezhrspace
rem 查詢含 xiezhrspace 的行,忽略大小寫
C:\Users\xiezhr>find /i "xiezhrspace" d:/xiezhr/xiezhr.txt
---------- D:/XIEZHR/XIEZHR.TXT
部落格:www.xiezhrspace.cn
公眾號:xiezhrspace
更多實用的文章和資源盡在公眾號:XiezhrSpace,歡迎訂
rem 顯示含 xiezhrspace 的行的行數
C:\Users\ye.ff>find /c "xiezhrspace" d:/xiezhr/xiezhr.txt
---------- D:/XIEZHR/XIEZHR.TXT: 2
5.2.8 fc
比較兩個檔案或兩個檔案集並顯示它們之間的不同
① 語法
FC /B [drive1:][path1]filename1 [drive2:][path2]filename2
[drive1:][path1]filename1
指定要比較的第一個檔案或第一個檔案集。
[drive2:][path2]filename2
指定要比較的第二個檔案或第二個檔案集。
② 舉例
rem 比較d盤xiezhr目錄下的“公眾號-xiezhrspace.txt” 和“xiezhr.txt”檔案 。如下為比較結果
D:\xiezhr>fc xiezhr.txt 公眾號-xiezhrspace.txt
正在比較檔案 xiezhr.txt 和 公眾號-XIEZHRSPACE.TXT
***** xiezhr.txt
微訊號:xie_zhr
部落格:www.xiezhrspace.cn
公眾號:xiezhrspace
***** 公眾號-XIEZHRSPACE.TXT
公眾號:xiezhrspace
*****
5.3 網路命令
5.3.1 ping
確定本地主機是否能與另一臺主機交換資料包
① 語法
ping+IP地址或主機域名
ping+IP地址或主機域名+命令引數
ping+命令引數+IP地址或主機域名
② 舉例
rem 本機與192.168.205.9是否連通
ping 192.168.205.9
rem 網路是否暢通
ping www.baidu.com
5.3.2 ftp
將檔案傳送到執行 FTP 伺服器服務(經常稱為後臺程式)的計算機以及將檔案從該計算機
傳出。可以互動使用 Ftp。
① 語法
ftp -v -d -i -n -g [主機名]
-v 顯示遠端伺服器的所有響應資訊;
-n 限制ftp的自動登入,即不使用;.n etrc檔案;
-d 使用除錯方式;
-g 取消全域性檔名
② 舉例
rem 將D盤xiezhr.txt檔案上傳到ftp 檔案伺服器
rem ftp伺服器資訊:ip:192.168.205.9 賬號:xiezhr 密碼:pswxiezhr
@Echo Off
Echo open 192.168.205.9 > ftp .up
Echo xiezhr >> ftp .up
Echo pswxiezhr >> ftp .up
Echo Cd .\User >> ftp .up
Echo binary>> ftp .up
Echo put "D:xiezhr.txt" >> ftp .up
Echo bye>> ftp .up
FTP -s: ftp .up
del ftp .up /q
Pause
5.3.3 net
網路命令集及使用者管理,根據使用的命令提供各種網路服務
① 語法
net [variant]
② 舉例
rem 檢視計算機的當前密碼和登入限制。
net accounts
新增或刪除附加到Windows域控制器的計算機。
net computer
rem 顯示當前的伺服器或工作組設定。
net config
rem 該命令可以用於檢視特定使用者帳戶的詳細資訊。
net user
rem 該命令用於停止和啟動特定的服務。
net stop/start
rem 顯示工作站或伺服器的網路統計資訊。
net statistics
rem 連線或斷開計算機與共享資源或顯示有關連線的資訊
net use
5.3.4 telnet
檢視某個埠是否可訪問。我們在搞開發的時候,經常要用的埠就是 8080。那麼你可以啟動伺服器,用telnet 去檢視這個埠是否可用。
① 語法
telnet IP 埠
telnet 域名 埠
② 舉例
rem 檢視主機192.168.205.9 的8080埠是否可以訪問
telnet 192.168.205.9 8080
5.3.5 ipconfig
顯示、修改TCP/IP設定
① 語法
ipconfig
② 舉例
rem 檢視本機IP地址
ipconfig
無線區域網介面卡 WLAN:
連線特定的 DNS 字尾 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : 2409:8a6c:72:41c0:5424:dc10:aa75:2782
臨時 IPv6 地址. . . . . . . . . . : 2409:8a6c:72:41c0:1df7:d511:b10e:72c
本地連結 IPv6 地址. . . . . . . . : fe80::5424:dc10:aa75:2782%11
IPv4 地址 . . . . . . . . . . . . : 192.168.1.80
子網掩碼 . . . . . . . . . . . . : 255.255.255.0
預設閘道器. . . . . . . . . . . . . : fe80::1%11
192.168.1.1
5.3.5 msg
給使用者傳送訊息
① 語法
MSG {username | sessionname | sessionid | @filename | *}
[/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]
username 標識指定的使用者名稱。
sessionname 會話名。
sessionid 會話 ID。
@filename 識別這樣一個檔案,該檔案含有將所發訊息傳送到的使用者
名、會話名和會話標識號的列表。
* 給指定伺服器上的所有會話傳送資訊。
/SERVER:servername 要聯絡的伺服器(預設值是當前值)。
/TIME:seconds 等待接收器確認訊息的時間延遲。
/V 顯示有關執行的操作的資訊。
/W 等待使用者的響應,跟 /V 一起有用。
message 要傳送的訊息。如果沒有指定,發出提示,或者從 stdin
讀取。
② 舉例
MSG /server:192.168.1.200 * "Hello" ----------------->>>>> 執行成功,彈出訊息對話方塊。
5.4 系統管理
5.4.1 shutdown
關閉計算機,或者登出當前使用者
① 語法
Shutdown
②舉例
rem 如果執行批處理檔案的使用者具有相關許可權,則計算機將被關閉。
@echo off
shutdown
5.4.2 Tasklist
列出任務,包括任務名稱和程式ID(PID)
① 語法
Tasklist
② 舉例
rem 列出當前系統上的所有任務
@echo off
Tasklist
5.4.3 Taskkill
於結束一個或多個任務。
① 語法
taskkill /im [taskname]
② 舉例
rem 將傳送一個終止訊息到MS Paint的任何開啟的程式
@echo off
Taskkill /im mspaint.exe
5.4.4 reg
登錄檔是Windows系統的關鍵要素之一。 它包含有關作業系統各個方面的大量資訊。 幾乎所有安裝在Windows系統上的應用程式都以某種形式與登錄檔互動
登錄檔包含兩個基本元素:鍵和值
① 語法
rem 1 從登錄檔中檢索任何鍵的值。
REG QUERY [ROOT\]RegKey /v ValueName [/s]
REG QUERY [ROOT\]RegKey /ve --This returns the (default) value
rem 2 向登錄檔新增值,需要在系統上擁有足夠的許可權才能執行此操作
REG ADD [ROOT\]RegKey /v ValueName [/t DataType] [/S Separator] [/d Data] [/f]
REG ADD [ROOT\]RegKey /ve [/d Data] [/f]
rem 3 從登錄檔中刪除值,需要在系統上擁有足夠的許可權來執行此操作。
REG DELETE [ROOT\]RegKey /v ValueName [/f]
REG DELETE [ROOT\]RegKey /ve [/f]
REG DELETE [ROOT\]RegKey /va [/f]
rem 4 從登錄檔複製值,您需要在系統上擁有足夠的許可權才能在源位置和目標位置上執行此操作。
REG COPY [\\SourceMachine\][ROOT\]RegKey [\\DestMachine\][ROOT\]RegKey
rem 5 比較登錄檔項
REG COMPARE [ROOT\]RegKey [ROOT\]RegKey [/v ValueName] [Output] [/s]
REG COMPARE [ROOT\]RegKey [ROOT\]RegKey [/ve] [Output] [/s]
② 舉例
rem 1 查詢登錄檔項HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ 下的所有鍵及其各自的值
@echo off R
EG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\
rem 2 在登錄檔 - HKEY_CURRENT_USER\Console 下新增一個鍵 鍵的名字是Test 分配給這個鍵的值是Test Data,它是預設的字串型別
@echo off
REG ADD HKEY_CURRENT_USER\Console /v Xiezhr /d "xiezhr"
rem 3 刪除登錄檔HKEY_CURRENT_USER\Console下的一個登錄檔項。 鍵的名稱是Test
@echo off
REG DELETE HKEY_CURRENT_USER\Console /v Xiezhr /f
rem 4 將內容從位置HKEY_CURRENT_USER\Console複製到同一臺機器上的HKEY_CURRENT_USER\Console\Xiezhr位置
@echo off
REG COPY HKEY_CURRENT_USER\Console HKEY_CURRENT_USER\Console\Xiezhr
rem 5 比較登錄檔項HKEY_CURRENT_USER\Console & HKEY_CURRENT_USER\Console\Xiezhr之間的所有值
@echo off
REG COMPARE HKEY_CURRENT_USER\Console HKEY_CURRENT_USER\Console\Xiezhr
6 Batch 常用命令
6.1 echo
開啟回顯或關閉請求回顯功能,或顯示訊息。如果沒有任何引數,echo命令將顯示當前回顯設定。
① 語法
echo [{on|off}] [message]
② 例子
rem 關閉單行回顯
@
rem 從下一行開始關閉回顯
echo off
rem 從本行開始關閉回顯。一般批處理第一行都是這個
@echo off
rem 從下一行開始開啟回顯
echo on
rem 顯示當前是 echo off 狀態還是 echo on 狀態
echo
rem 輸出一個”回車換行”,空白行
echo.
rem 在實際應用中我們會把這條命令和重定向符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一些命令到特定的檔案中 命令會建立一個名為"test"的文字檔案,並將"test"輸入到文字檔案中。
echo test>test.txt
6.2 rem 和 ::
註釋命令,類似於在程式語言中的/--------/,它並不會被執行,只是起一個註釋的作用,只有在編輯批處理時才會被看到,主要用於方便修改
① 語法
Rem [註釋內容]
② 例子
Rem 此處是註釋內容。
6.3 pause
暫停命令。執行 Pause 命令時,將顯示下面的訊息:
Press any key to continue. . .(或:請按任意鍵繼續. . .)
① 語法
pause
② 例子
C:\Users\xiezhr>pause
請按任意鍵繼續. . .
6.4 call
從一個批處理程式呼叫另一個批處理程式,並且不終止父批處理程式。還可以呼叫指定標號處後面的所有命令
① 語法
call [drive:][path]filename [batch-parameters]
[drive:][path]filename:指定被呼叫的批處理檔名,當被呼叫的批處理檔案與正在執行的批處理檔案處於同一目錄下時,可以省調磁碟機代號及路徑
②舉例
在D盤先分別建立test.bat 和 called.bat批處理檔案
test.bat
@echo off
echo 正在呼叫called.bat
call called.bat
echo called.bat 呼叫完畢
called.bat
@echo off
@echo 已經進入到called.bat 中。。。
test.bat 和called.bat 建立完畢後,執行test.bat,當test.bat執行到call called.bat命令時便轉向執行called.bat批處理檔案中的內容。called.bat 執行完之後繼續執行test.bat call called.bat 命令列後面的內容
6.5 start
呼叫外部程式,所有的DOS命令和命令列程式都可以由start命令來呼叫
①語法
START “programname”
② 舉例
rem 修改 DOS 視窗標題
start title "新標題"
rem 開啟計算機 E 盤
start E:
rem 最小化開啟記事本
start /min notepad.exe
rem 最大化開啟計算器
start /max calc
rem 開啟工作管理員
start taskmgr
rem 同時開啟寫字板和計算器 用 & 將兩個要開啟的程式連起來
start write & calc
6.6 cls
清屏
① 語法
cls
② 舉例
@echo off
dir
cls
6.7 title
設定控制檯視窗中顯示的標題。在實際工作中,我們會在一臺伺服器上啟動很多服務,這時我們透過給不同的服務起不同的名字就很容易辨認出不同服務
① 語法
TITLE [Tilename]
其中,tilename是要提供給命令提示符視窗標題的新名稱
② 舉例
rem 將把視窗的標題改為“xiezhr的新視窗“。
@echo off
Title “xiezhr的新視窗”
6.8 ver
顯示系統版本
① 語法
ver
② 舉例
rem 下面命令將顯示系統版本
@echo off
ver
6.9 date
用於獲取當前系統時間。
① 語法
date
② 舉例
rem 顯示當前日期
@echo off
echo %DATE%
6.10 time
用於設定或顯示時間
① 語法
time
② 舉例
rem 顯示系統當前時間
@echo off
echo %TIME%
6.11 exit
用於退出DOS控制檯
① 語法
exit
② 舉例
rem 退出doc控制檯
exit
6.12 set
設定變數。引用變數可在變數名前後加 % ,即 %變數名%
① 語法
set
② 舉例
rem 顯示當前系統上的環境變數列表
@echo off
set
rem 進行四則運算
@echo off
set /a a=1+1,b=2+1,c=3+1
echo %a% %b% %c%
6.13 if
判斷語句,如果滿足條件則執行條件後語句
① 語法
rem 1 if語句
if (condition) do_something
rem 2 if/else 語句
if (condition) (do_something) ELSE (do_something_else)
if 語句
if/else 語句
② 舉例
rem 如果d盤存在xiezhr.bat 則輸出“存在d:xiezhr.bat檔案”
if exist d:xiezhr.bat echo 存在d:xiezhr.bat檔案
rem 如果d盤不存在xiezhr 資料夾則輸出“不存在d:xiezhr資料夾”
if not exist d:xiezhr (
echo 不存在d:xiezhr資料夾
)
rem 每個“if else”程式碼放在括號()中。 如果括號不是用於分隔"if"和"else"程式碼的程式碼,那麼如果else語句不成立,那麼這些語句就不會有效。
rem 在第一個“if else”語句中,if條件將評估為true。
rem 在第二個“if else”語句中,else條件將被執行,因為條件將被評估為false
@echo off
SET /A a=15
SET /A b=20
SET /A c=%a% + %b%
if %c%==35 (echo "最後結果為 35") else (echo "為知結果")
if %c%==45 (echo "最後結果為 45") else (echo "為知結果")
6.13 for
迴圈命令。對一組檔案中的每一個檔案執行某個特定命 具體參照 for /? 檢視
① 語法
FOR %variable IN (set) DO command [command-parameters]
%variable 指定一個單一字母可替換的引數。
(set) 指定一個或一組檔案。可以使用萬用字元。
command 指定對每個檔案執行的命令。
command-parameters 為特定命令指定引數或命令列開關
② 舉例
rem 依次呼叫小括號裡的每個字串,執行 do 後面的命令
for %%i in (c: d: e: f:) do echo %%i
rem 把 d:xiezhr 及其子目錄裡的mp4檔案的檔名都存到 d:xiezhr.txt 裡去
for /r d:xiezhr %%i in (*.mp4) do echo %%i>>d:xiezhr.txt
rem 對當前目錄裡所有的txt檔案執行 find 命令,找出包含“xiezhr” 字元的所有檔案
for %%i in (*.txt) do find "xiezhr" %%i
rem 在當前目錄和子目錄裡所有的.txt檔案中搜尋包含“xiezhr”字串的行
for /r . %%i in (*.txt) do find "xiezhr" %%i
7 批處理使用中一些常見問題
7.1 雙擊開啟批出裡檔案xiezhr.bat後閃退
可能原因
- 執行速度很快,執行完之後,自行關閉
- 語法錯誤
解決辦法
- 在最後面一行加上 pause
@echo off
set p=xiezhr
if %p%==xiezhr (
echo %p%
set p=xiezrhspace
echo %p%
)
pause
- 用文字編輯器開啟xiezhr.bat 檔案,檢查命令是否都書寫正確
7.2 批處理xiezhr.bat 檔案中輸出中文亂碼
原因
- 記事本新建的檔案,編碼不是 utf-8
解決辦法
- 用【記事本】開啟>【另存為】>【修改編碼為:utf-8】