主頁 >  其他 > 打開windows批處理大門

打開windows批處理大門

2023-05-14 07:59:17 其他

大家好,我是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/552380.html

標籤:其他

上一篇:Grafana系列-統一展示-8-ElasticSearch日志快速搜索儀表板

下一篇:返回列表

標籤雲
其他(158985) Python(38129) JavaScript(25420) Java(18034) C(15226) 區塊鏈(8265) C#(7972) AI(7469) 爪哇(7425) MySQL(7181) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5339) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4572) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1972) 功能(1967) Web開發(1951) HtmlCss(1936) python-3.x(1918) C++(1915) 弹簧靴(1913) xml(1889) PostgreSQL(1875) .NETCore(1860) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 打開windows批處理大門

    大家好,我是xiezhr。 1 前言 打開歷史文章一看,上一篇文章是2021年3月20號更新的,又拖更了。 一個原因是,最近作業上真的挺忙的,有比較著急需要加班加點趕的需求。好在清明前算是把比較著急的改好了。本來安排清明也是要加班的,但是真的加不動了。(連著加班真的挺影響效率的,適當休息是非常有必要 ......

    uj5u.com 2023-05-14 07:59:17 more
  • Grafana系列-統一展示-8-ElasticSearch日志快速搜索儀表板

    系列文章 Grafana 系列文章 概述 我們是基于這篇文章: Grafana 系列文章(十二):如何使用 Loki 創建一個用于搜索日志的 Grafana 儀表板, 創建一個類似的, 但是基于 ElasticSearch 的日志快速搜索儀表板. 最終完整效果如下: 📝Notes: 其實我基于 E ......

    uj5u.com 2023-05-14 07:59:00 more
  • 聯邦學習:聯邦場景下的域泛化

    然而,目前大多數域泛化方法需要將不同領域的資料進行集中收集。然而在現實場景下,由于隱私性的考慮,資料常常是分布式收集的。因此我們需要考慮聯邦域泛化(federated domain generalization, FedDG)方法。這里需要注意的是,傳統的域泛化方法常常要求直接對齊表征或操作資料,這... ......

    uj5u.com 2023-05-14 07:58:17 more
  • AtCoder Beginner Contest 301

    title: AtCoder Beginner Contest 301 categories: 演算法題解 description: 咕咕咕 tags: Atcoder 貪心 BFS DP cover: /img/chino/vec/chino17.jpg katex: true date: 2023 ......

    uj5u.com 2023-05-14 07:57:41 more
  • 牛客小白月賽72

    A.跳躍游戲 題目: 分析: 根據跳躍規則,只要中間存在高度介于起點和終點之間的平臺即可讓小Z從第一個平臺跳到最后一個平臺。 code: #include <bits/stdc++.h> using namespace std; const int N = 1e5 + 5; int a[N]; in ......

    uj5u.com 2023-05-14 07:57:29 more
  • Codeforces Round 871 (Div. 4)

    A.Love Story 題意: 給定n個長度為10的字串,問其與codeforces字串的對應下標字母不同的個數。 分析: 對于每個字串從前往后依次和“codeforces”對應字符比較然后統計不同字母數即可 code: #include <bits/stdc++.h> using name ......

    uj5u.com 2023-05-14 07:57:17 more
  • Codeforces Round 867 (Div. 3)

    A. TubeTube Feed 分析: 從所有a[i]+i-1<=t的選擇種取個max即可 code: #include <bits/stdc++.h> using namespace std; const int N = 55; int a[N], b[N]; int main() { std: ......

    uj5u.com 2023-05-14 07:57:10 more
  • 牛客小白月賽71

    A.貓貓與廣告 題目: 分析: 只需考慮c * d的矩陣豎著擺和橫著擺兩種情況。本題提示了考慮兩矩陣對應邊平行的情況,實際上可以證明倘若能斜著放,那么一定可以橫著放或豎著放,證明方式可已通過構造三角形來證明a* b的矩陣的長寬一定小于c * d矩陣的長寬。 code: #include <iostr ......

    uj5u.com 2023-05-14 07:56:50 more
  • 給你安利一款國產良心軟體uTools

    前言 大家好,我是xiezhr 最近由于換了新電腦,也是在各種折騰搭建開發環境,安裝各種常用軟體。今天呢給大家安利一款你可能沒用過的國產良心軟體uTools,這也是我剛剛拿到電腦后安裝的第一款軟體吧。第一次知道這軟體是在B站刷程式員魚皮up主視頻的時候,up主推薦的。它能極大提作業和學習效率,可以稱 ......

    uj5u.com 2023-05-14 07:49:58 more
  • 爆肝一周,我開源了ChatGPT 中文版介面,官方1:1鏡像支持全部 官方介

    這里實作我之前文章承諾承接上文 人人實作ChatGPT自由,手把手教你零擼部署自己聊天私服 現在ChatGPT 提供了api介面 可以讓我自己對接去實作我們自己想要gpt應用,但是由于一些原因,國內也不開放介面,所以我就1:1 自己對接了官方所有介面。 大家可以通過我的介面輕松實作一個自己定制化的聊 ......

    uj5u.com 2023-05-14 07:31:46 more