大家好,我是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】

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/552370.html
標籤:其他
上一篇:內網滲透基礎知識
下一篇:返回列表
