日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bat 批示处理详解-1

發(fā)布時(shí)間:2023/12/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bat 批示处理详解-1 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

bat 批示處理詳解-1

  • 一: bat 文件理解
    • 1> 理解
    • 2> 批處理運(yùn)行命令機(jī)制
  • 二: dos命令整理
    • 1> dos命令 help /commadn /? -查詢幫助
    • 2> dos命令使用查詢
      • 1. 傳參命令--COLOR -H
      • 2. 查詢指令 SYSTEMINFO
      • 3. DOS窗口的編碼格式
  • 三: bat 語法介紹
    • 1> 輔助命令
      • 1. 符號(hào)&轉(zhuǎn)義&組合
        • 符號(hào)-“”、%、:, ; () !
        • 轉(zhuǎn)義\換行
        • 組合
      • 2. echo 回顯
      • 3. pause
      • 4. 句柄
    • 2> 文件處理命令
      • 1. 文件處理
        • ren 重命名
        • move 移動(dòng)
        • del 刪除
      • 2. 文件調(diào)用及區(qū)別call&start& goto
    • 3> 執(zhí)行語句命令
      • 1. if else& if& if exist
      • 2. if errorlevel number
      • 3. for 循環(huán)
        • /L
        • /d
        • /r
        • /F
      • 4. continue 和 break
    • 4> 其他相關(guān)常用命令
      • 1. 路徑相關(guān)
      • 2. 傳參相關(guān)
      • 3,字符串處理
        • A: 分割
        • B: 替換
        • C:拼接
        • D: 計(jì)算長(zhǎng)度
        • E: 截取字符,傳遞參數(shù)
      • 4. set 命令
        • A: set 賦值
        • B: set /p 讀取輸入
        • C: set /a 數(shù)學(xué)運(yùn)算
        • D: set 字符截取& 替換
        • E: set 賦值變量
        • F: set 字符開頭變量
      • 5. ping 命令
      • 6. shutdown命令
      • 7. choice 命令
  • 四:題外話
    • 1> call 文件的相互傳參
    • 2> setlocal enabledelayedexpansion 含義
    • 3> bat 批示處理詳解-2

一: bat 文件理解

1> 理解

windows下BAT批處理的工作原理就是一次處理多條DOS命令,其效果和在DOS下依次執(zhí)行各條命令相同;BAT文件其實(shí)就是文本文件,用任意文本編輯器均可打開。

windows下借助bat文件,相對(duì)于–Linux下借助shell腳本可以完成很多操作步驟繁瑣但操作次序相同,且整個(gè)過程需要重復(fù)執(zhí)行多次的情況

2> 批處理運(yùn)行命令機(jī)制

批處理讀取命令時(shí)是按行讀取,在處理之前要完成必要的預(yù)處理工作;在其中包含該命令中的變量賦值;

應(yīng)用場(chǎng)景:'交換'兩個(gè)變量的值,但是'不使用臨時(shí)'變量set var1=abcset var2=123set var1=%var2%& set var2=%var1%原因:先做'預(yù)處理'-->'變量值'替換

錯(cuò)誤語法:

set a=123 & echo %a% # 命令是按行讀取,此處還未對(duì)a做處理,所以此處是有錯(cuò)誤的

為了解決這類問題,設(shè)置變量延遲
作用:在讀取完成一行語句后,不立即對(duì)該行的變量進(jìn)行賦值,而是會(huì)對(duì)某單條語句執(zhí)行后,在進(jìn)行賦值,這也是延遲變量賦值作用;

setlocal enabledelayedexpansion 啟動(dòng)了變量延遲效果:告知'批處理'動(dòng)態(tài)'感知'變化-->即'先不給'該行變量賦值,而是在'運(yùn)行過程中'給變量'賦值' -->'順序'

解讀:%variable%‘不能感知’變量的’變化’

@echo off setlocal enabledelayedexpansion for /l %%i in (1,3,10) do ( set a=%%i # 此處不能使用 %a% echo !a! )pause

二: dos命令整理

1> dos命令 help /commadn /? -查詢幫助

cmd界面直接輸入---》help 如下命令 常用命令含義
CD顯示當(dāng)前目錄的名稱或?qū)⑵涓摹?/td>
CHDIR顯示當(dāng)前目錄的名稱或?qū)⑵涓摹?/td>
BREAK設(shè)置或清除擴(kuò)展式 CTRL+C 檢查。
DATE顯示或設(shè)置日期
DIR顯示一個(gè)目錄中的文件和子目錄
ECHO顯示消息,或?qū)⒚罨仫@打開或關(guān)閉
EXIT退出 CMD.EXE 程序(命令解釋程序)
FIND在一個(gè)或多個(gè)文件中搜索一個(gè)文本字符串。
FINDSTR在多個(gè)文件中搜索字符串。
HELP提供 Windows 命令的幫助信息。
PATH為可執(zhí)行文件顯示或設(shè)置搜索路徑。
PAUSE暫停批處理文件的處理并顯示消息。
ENDLOCAL結(jié)束批文件中環(huán)境更改的本地化。
TIME顯示或設(shè)置系統(tǒng)時(shí)間。
CLS清除屏幕
SYSTEMINFO顯示計(jì)算機(jī)的特定屬性和配置。
COLOR設(shè)置默認(rèn)控制臺(tái)前景和背景顏色。
文件或目錄命令含義
COPY將至少一個(gè)文件復(fù)制到另一個(gè)位置。
MD創(chuàng)建一個(gè)目錄。
RD刪除目錄。
MKDIR創(chuàng)建一個(gè)目錄。
MKLINK創(chuàng)建符號(hào)鏈接和硬鏈接
MODE配置系統(tǒng)設(shè)備。
MORE逐屏顯示輸出。
MOVE將一個(gè)或多個(gè)文件從一個(gè)目錄移動(dòng)到另一個(gè)目錄。
COMP比較兩個(gè)或兩套文件的內(nèi)容
OPENFILES顯示遠(yuǎn)程用戶為了文件共享而打開的文件。
DEL刪除至少一個(gè)文件。
ERASE刪除一個(gè)或多個(gè)文件。
FC比較兩個(gè)文件或兩個(gè)文件集并顯示 它們之間的不同。
RECOVER從損壞的或有缺陷的磁盤中恢復(fù)可讀信息。
REN重命名文件。
RENAME重命名文件。
REPLACE替換文件。
RMDIR刪除目錄。
ROBOCOPY復(fù)制文件和目錄樹的高級(jí)實(shí)用工具
dos命令語句含義
CALL從另一個(gè)批處理程序調(diào)用這一個(gè)。
IF在批處理程序中執(zhí)行有條件的處理操作。
SET顯示、設(shè)置或刪除 Windows 環(huán)境變量。
SORT對(duì)輸入排序。
FOR為一組文件中的每個(gè)文件運(yùn)行一個(gè)指定的命令。
GOTO將 Windows 命令解釋程序定向到批處理程序中某個(gè)帶標(biāo)簽的行。
SETLOCAL開始本地化批處理文件中的環(huán)境更改。
START啟動(dòng)單獨(dú)的窗口以運(yùn)行指定的程序或命令。
TASKLIST顯示包括服務(wù)在內(nèi)的所有當(dāng)前運(yùn)行的任務(wù)。
TASKKILL中止或停止正在運(yùn)行的進(jìn)程或應(yīng)用程序。
TYPE顯示文本文件的內(nèi)容。
PRINT打印一個(gè)文本文件。
其他命令含義
TITLE設(shè)置 CMD.EXE 會(huì)話的窗口標(biāo)題。
TREE以圖形方式顯示驅(qū)動(dòng)程序或路徑的目錄結(jié)構(gòu)。
VER顯示 Windows 的版本。
CHCP顯示或設(shè)置活動(dòng)代碼頁數(shù)。
CHKDSK檢查磁盤并顯示狀態(tài)報(bào)告。
ASSOC顯示或修改文件擴(kuò)展名關(guān)聯(lián)。
CHKNTFS顯示或修改啟動(dòng)時(shí)間磁盤檢查。
ATTRIB顯示或更改文件屬性。
CMD打開另一個(gè) Windows 命令解釋程序窗口。
BCDEDIT設(shè)置啟動(dòng)數(shù)據(jù)庫中的屬性以控制啟動(dòng)加載。
CACLS顯示或修改文件的訪問控制列表(ACL)。
COMPACT顯示或更改 NTFS 分區(qū)上文件的壓縮。
CONVERT將 FAT 卷轉(zhuǎn)換成 NTFS。你不能轉(zhuǎn)換當(dāng)前驅(qū)動(dòng)器。
DISKPART顯示或配置磁盤分區(qū)屬性。
DOSKEY編輯命令行、撤回 Windows 命令并創(chuàng)建宏。
DRIVERQUERY顯示當(dāng)前設(shè)備驅(qū)動(dòng)程序狀態(tài)和屬性。
FSUTIL顯示或配置文件系統(tǒng)屬性。
FTYPE顯示或修改在文件擴(kuò)展名關(guān)聯(lián)中使用的文件類型。
FORMAT格式化磁盤,以便用于 Windows。
GPRESULT顯示計(jì)算機(jī)或用戶的組策略信息。
GRAFTABL使 Windows 在圖形模式下顯示擴(kuò)展字符集。
LABEL創(chuàng)建、更改或刪除磁盤的卷標(biāo)。
ICACLS顯示、修改、備份或還原文件和目錄的 ACL。
POPD還原通過 PUSHD 保存的當(dāng)前目錄的上一個(gè)值。
SCHTASKS安排在一臺(tái)計(jì)算機(jī)上運(yùn)行命令和程序。
SHIFT調(diào)整批處理文件中可替換參數(shù)的位置。
SHUTDOWN允許通過本地或遠(yuǎn)程方式正確關(guān)閉計(jì)算機(jī)。
PROMPT更改 Windows 命令提示。
PUSHD保存當(dāng)前目錄,然后對(duì)其進(jìn)行更改。
SC顯示或配置服務(wù)(后臺(tái)進(jìn)程)。
SUBST將路徑與驅(qū)動(dòng)器號(hào)關(guān)聯(lián)。
VERIFY告訴 Windows 是否進(jìn)行驗(yàn)證,以確保文件正確寫入磁盤。
VOL顯示磁盤卷標(biāo)和序列號(hào)。
XCOPY復(fù)制文件和目錄樹。
WMIC在交互式命令 shell 中顯示 WMI 信息。
REM記錄批處理文件或 CONFIG.SYS 中的注釋(批注)。

2> dos命令使用查詢

dos_command -help(-h)

1. 傳參命令–COLOR -H

設(shè)置默認(rèn)的控制臺(tái)前景和背景顏色。COLOR [attr]attr 指定控制臺(tái)輸出的顏色屬性。顏色屬性由兩個(gè)十六進(jìn)制數(shù)字指定 -- 第一個(gè) 對(duì)應(yīng)于背景,第二個(gè)對(duì)應(yīng)于前景。每個(gè)數(shù)字 可以為以下任何值:0 = 黑色 8 = 灰色1 = 藍(lán)色 9 = 淡藍(lán)色2 = 綠色 A = 淡綠色3 = 淺綠色 B = 淡淺綠色4 = 紅色 C = 淡紅色5 = 紫色 D = 淡紫色6 = 黃色 E = 淡黃色7 = 白色 F = 亮白色如果沒有給定任何參數(shù),此命令會(huì)將顏色還原到 CMD.EXE 啟動(dòng)時(shí) 的顏色。這個(gè)值來自當(dāng)前控制臺(tái) 窗口、/T 命令行開關(guān)或 DefaultColor 注冊(cè)表 值。如果嘗試使用相同的 前景和背景顏色來執(zhí)行COLOR 命令,COLOR 命令會(huì)將 ERRORLEVEL 設(shè)置為 1。示例: "COLOR fc" 在亮白色上產(chǎn)生淡紅色

DEMO

COLOR 72# 背景7 = 白色, 字體 2 = 綠色

2. 查詢指令 SYSTEMINFO

C:\Users\CHH_PC>SYSTEMINFO 主機(jī)名: DESKTOP-T164P4E OS 名稱: Microsoft Windows 10 專業(yè)版 OS 版本: 10.0.19044 暫缺 Build 19044 OS 制造商: Microsoft Corporation OS 配置: 獨(dú)立工作站 OS 構(gòu)建類型: Multiprocessor Free 注冊(cè)的所有人: CHH_PC 注冊(cè)的組織: 暫缺 產(chǎn)品 ID: 00331-20020-00000-AA583 初始安裝日期: 2022/4/15, 20:25:43 系統(tǒng)啟動(dòng)時(shí)間: 2022/6/25, 0:02:32 系統(tǒng)制造商: Dell Inc. 系統(tǒng)型號(hào): Inspiron 7472 系統(tǒng)類型: x64-based PC 處理器: 安裝了 1 個(gè)處理器。[01]: Intel64 Family 6 Model 142 Stepping 10 GenuineIntel ~1600 Mhz

3. DOS窗口的編碼格式

936 是微軟為中國(guó)區(qū)設(shè)置的編碼格式,當(dāng)然,我們也可以對(duì)編碼格式進(jìn)行修改 chcp 編碼格式代碼 #這種只是臨時(shí)的進(jìn)行修改當(dāng)前文件的編碼格式,當(dāng)這個(gè)DOS窗口關(guān)閉后又將恢復(fù)到原來的編碼格式 代碼編碼格式
950繁體中文
65001UTF-8
936簡(jiǎn)體中文默認(rèn)的GBK
437MS-DOS 美國(guó)英語
1253希臘語
1258越南語
1256阿拉伯語

三: bat 語法介紹

1> 輔助命令

1. 符號(hào)&轉(zhuǎn)義&組合

符號(hào)-“”、%、:, ; () !

:冒號(hào)
** : : 開頭為單個(gè)冒號(hào);被視作標(biāo)號(hào),而直接忽略后面所有的內(nèi)容;
有效標(biāo)號(hào): 冒號(hào)后緊跟一個(gè)以字母數(shù)字開頭的字符串,goto語句可以識(shí)別;
無效標(biāo)號(hào):冒號(hào)后緊跟一個(gè)非字母數(shù)字開頭的字符串,goto語句無法識(shí)別;可以起到注釋左右;即作為習(xí)慣 ** :: ** 常被用做注釋符號(hào),其實(shí)后面一個(gè) ** : ** 可以替換成任意字符也能起到注釋效果,如:
:+** 、 :* …
REM:‘注釋命令’,一般用來給程序’加上注解’,該命令后的內(nèi)容’不被執(zhí)行, 但’能回顯;
%注釋內(nèi)容% :用于行內(nèi)注釋,極少用,慎用;

注釋區(qū)別
::不可回顯,被視作無效命令
REM或rem不被執(zhí)行,能回顯,可用于config.sys文件

“”: 雙引號(hào): 允許在字符串中出現(xiàn)空格;
%:百分號(hào)

涉及:%、%%vaeiable-->"for循環(huán)中(接受變量)"、%variable%-->"echo中引用變量"備注:!variable! -->是對(duì)'%variable%'的增強(qiáng) 符號(hào)功能
%批處理變量引導(dǎo)符號(hào)
%var%引用變量
%0、—%90為批量本身,1-9為傳參;例如:copy %0 /sys/
行內(nèi)注釋%注釋內(nèi)容%-但不能出現(xiàn)重定向等符號(hào)

, 逗號(hào)
逗號(hào)相當(dāng)于空格,在某些情況下“,”可以用來當(dāng)做空格使
dir,c:\ 或者傳參 12,23

; 分號(hào)
分號(hào),當(dāng)命令相同時(shí),可以將不同目標(biāo)用;來隔離,但執(zhí)行效果不變,如執(zhí)行過程中發(fā)生錯(cuò)誤,則只返回錯(cuò)誤報(bào)告,但程序仍會(huì)執(zhí)行。
dir c:\;d:\;e:\;z:\ 等同于
dir c:\
dir d:\ …
() 括號(hào)
小括號(hào)在批處理編程中有特殊的作用,左右括號(hào)必須成對(duì)使用,括號(hào)中可以包括多行命令,這些命令將被看成一個(gè)整體,視為一條命令行。
在for語句和if語句中常見,用來嵌套使用循環(huán)或條件語句,其實(shí)括號(hào)()也可以單獨(dú)使用;
demo

命令:echo 1 echo 2 & echo 3 可以寫成: ( echo 1 echo 2 echo 3 )

! 感嘆號(hào)
在變量延遲問題中,用來表示變量,即%var%應(yīng)該表示為!var!

轉(zhuǎn)義\換行

符號(hào)功能
^開頭對(duì)特殊符號(hào)’<、>、&'的前導(dǎo)字符,在命令中他將’以上3個(gè)符號(hào)’的’特殊’功能去掉,僅僅只把他們’當(dāng)成符號(hào)’而’不使用’他們的特殊意義
^末尾在語句末尾起到換行作用

組合

&、&&、||:把多條命令組合起來成一條命令執(zhí)行
語法: 第一條命令 & 第二條命令 & 第三條命令 [&…]

符號(hào)功能
&把多條命令順序執(zhí)行,中間有語句錯(cuò)誤,不影響下一句語句執(zhí)行,無條件執(zhí)行&符號(hào)后面的命令
&&當(dāng)&&前面的命令成功執(zhí)行時(shí),執(zhí)行&&后面的命令,否則不執(zhí)行
雙管道符當(dāng)前面的命令失敗時(shí),執(zhí)行符號(hào)后面的命令,否則不執(zhí)行

優(yōu)先級(jí)別

'|' 大于 '>、>>' 大于 '||、&&' # 管道命令優(yōu)先高于重定向命令,重定向命令優(yōu)先高于組合命令;

2. echo 回顯

備注: echo 后面的字符串’不需要加’雙引號(hào)–>否則也會(huì)’寫入文件’中 -->區(qū)別Linux
關(guān)閉回顯:是指’運(yùn)行批處理文件’時(shí),‘不顯示’文件里的’每條命令’,只顯示’運(yùn)行結(jié)果’;
@echo off #從’本行開始’關(guān)閉回顯 ----一般批處理’第一行’都是這個(gè)

C:\Users\CHH_PC>echo /? 顯示消息,或者啟用或關(guān)閉命令回顯。ECHO [ON | OFF]ECHO [message]若要顯示當(dāng)前回顯設(shè)置,請(qǐng)鍵入不帶參數(shù)的 ECHO。 ========================================== echo off :顯示執(zhí)行的路徑,不顯示執(zhí)行命令,直接顯示內(nèi)容 echo on:顯示執(zhí)行的路徑,顯示執(zhí)行命令并顯示內(nèi)容, @echo off : 不顯示執(zhí)行的路徑,不顯示執(zhí)行命令,直接顯示內(nèi)容

用法:
A:echo 配合@ \off\on 關(guān)閉打開回顯
B:echo 后面跟空格加字符,回顯字符串信息作用;
C: echo緊跟 .|,管道符后可以跟命令用來回顯;

C:\Users\CHH_PC>echo.|time 當(dāng)前時(shí)間: 22:35:19.42 輸入新時(shí)間:

bat內(nèi)容

@echo off echo.|SYSTEMINFO pause

D: echo 生成文件并寫入信息;

echo a test file. >1.txt # 此處生成文件并寫入內(nèi)容,且a test file. 后有個(gè)空格; echo a test file.>1.txt# 此處生成文件并寫入內(nèi)容,且a test file. 后無空格;因?yàn)?**file.>1** ,連接處無空格; echo a test file.>>1.txt# 此處生成文件并寫入內(nèi)容或者對(duì)文件內(nèi)容后面追加內(nèi)容;

E:echo 使電腦發(fā)出聲音用來提示;

聲音命令
蜂鳴echo pause>nul

3. pause

運(yùn)行此句會(huì)暫停批處理的執(zhí)行并在屏幕上顯示Press any key to continue…的提示,等待用戶按任意鍵后繼續(xù);

4. 句柄

句柄:代碼中智能指針;

內(nèi)容含義
‘>&’將一個(gè)句柄內(nèi)容輸出寫入到另一個(gè)句柄輸入
'<& ’將一個(gè)句柄讀取輸入寫入到另一個(gè)句柄輸出中
常用句柄含義
總述常用句柄定義0,1,2,其中3-9未定;stdin可以被<重定向,stdout可以被 > ,>> 重定向;
1>nul禁止輸出正確信息;1,2代表某數(shù)據(jù)流入流出的地址,
2>nul禁止輸出錯(cuò)誤信息;1,2代表某數(shù)據(jù)流入流出的地址,
0標(biāo)準(zhǔn)輸入stdin,鍵盤輸入
1標(biāo)準(zhǔn)輸出stdout,輸出到命令提示符窗口conole
2標(biāo)準(zhǔn)錯(cuò)誤輸出stderr,輸出到命令提示符窗口conole

2> 文件處理命令

1. 文件處理

ren 重命名

ren 1.png 2.png # first_file target_file

move 移動(dòng)

move file_pat target_path

del 刪除

刪除一個(gè)或多個(gè)文件。DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] namesnames 指定一個(gè)或多個(gè)文件或者目錄列表。通配符可用來刪除多個(gè)文件。如果指定了一個(gè)目錄,該目錄中的所有文件都會(huì)被刪除。/P 刪除每一個(gè)文件之前提示確認(rèn)。/F 強(qiáng)制刪除只讀文件。/S 刪除所有子目錄中的指定的文件。/Q 安靜模式。刪除全局通配符時(shí),不要求確認(rèn)/A 根據(jù)屬性選擇要?jiǎng)h除的文件屬性 R 只讀文件 S 系統(tǒng)文件H 隱藏文件 A 準(zhǔn)備存檔的文件I 無內(nèi)容索引文件 L 重新分析點(diǎn)O 脫機(jī)文件 - 表示“否”的前綴如果命令擴(kuò)展被啟用,DEL 和 ERASE 更改如下:/S 開關(guān)的顯示句法會(huì)顛倒,即只顯示已經(jīng) 刪除的文件,而不顯示找不到的文件。

2. 文件調(diào)用及區(qū)別call&start& goto

直接調(diào)用,在文本中直接調(diào)用文件名;例如:@echo off 2.png ,可以直接打開圖片
call 調(diào)用另一個(gè)批處理文件或可執(zhí)行程序

語法: call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 參數(shù): [Drive:][Path] FileName 指定要調(diào)用的批處理程序的位置和名稱。filename 參數(shù)必須具有 .bat 或 .cmd 擴(kuò)展名。

start 調(diào)用;調(diào)用外部程序,所有的 DOS命令 和 命令行程序 都可以由 start命令 來調(diào)用

常用參數(shù): MIN :開始時(shí)窗口最小化 SEPARATE :在分開的空間內(nèi)開始 16 位 Windows 程序 HIGH: 在 HIGH 優(yōu)先級(jí)類別開始應(yīng)用程序 REALTIME :在 REALTIME 優(yōu)先級(jí)類別開始應(yīng)用程序 WAIT :啟動(dòng)應(yīng)用程序并等候它結(jié)束 parameters 這些為傳送到命令/程序的參數(shù)================================ Sample:start /MIN test2.bat arg1 arg2 (調(diào)用同目錄下的 test2.bat,且輸入2個(gè)參數(shù)給他,且本窗口最小化)

goto label: —:label
區(qū)別:其中主要是直接調(diào)用與call區(qū)別,其他只是跳轉(zhuǎn)

命令區(qū)別
直接調(diào)用可以調(diào)用別的批處理文件,但是這樣調(diào)用的批處理文件執(zhí)行結(jié)束后不會(huì)回到原來的批處理文件
call調(diào)用另一個(gè)批處理文件或可執(zhí)行程序,并不終止原來的文件;主要來進(jìn)行批處理的內(nèi)部調(diào)用,當(dāng)然也可以調(diào)用可執(zhí)行程序,
start可以調(diào)用別的批處理文件 &文件&可執(zhí)行文件;執(zhí)行結(jié)束后不會(huì)回到原來的批處理文件;而start 不能進(jìn)行內(nèi)部調(diào)用,但是其可以執(zhí)行幾乎所有的外部程序。call 是在當(dāng)前窗體進(jìn)行調(diào)用一個(gè)子進(jìn)程,變量可以互通,但是start 調(diào)用外部程序是相當(dāng)于是新開一個(gè)進(jìn)程。call 可以將參數(shù)傳入子進(jìn)程,子進(jìn)程也可以將值返回,但是start 只能進(jìn)行傳參,但是不能返回參數(shù)或者變量
goto其后可以直接調(diào)用,但主要運(yùn)用在循環(huán)中的跳轉(zhuǎn);goto label: 跳轉(zhuǎn)到指定標(biāo)簽行,然后從" : label " 的下一行開始處理命令 ,goto 語句經(jīng)常和 if 連起來用label 的名字可以隨意取,goto 是根據(jù) " : " 找到該標(biāo)簽的,不要忘記了 冒號(hào)。

demo

@echo offecho goto goto test1: :test1 # 直接跳轉(zhuǎn)在這里,可以放在循環(huán)中跳轉(zhuǎn) start test1.bat pause

3> 執(zhí)行語句命令

1. if else& if& if exist

if 表示將判斷是否符合規(guī)定的條件,從而決定執(zhí)行不同的命令;
語法:
DOS命令里并沒有 != 這種寫法,但是提供了 not 關(guān)鍵詞,也是條件取反的意思

if 條件(成立時(shí)執(zhí)行的命令) else (不成立時(shí)執(zhí)行的命令) ::執(zhí)行的語句建議都寫在 "()" 里。 當(dāng)else換行時(shí)候;if 語句的末尾使用 " ^ " 符號(hào)將語句進(jìn)行連接,否則會(huì)報(bào)錯(cuò)if 條件(成立時(shí)執(zhí)行的命令)^else (不成立時(shí)執(zhí)行的命令)

demo

@echo off if exist test1.bat (test1.bat)^ else (echo "the file not exist") ::當(dāng)存在second.bat 時(shí)就執(zhí)行這個(gè)批處理文件 否則打印"the file not exist" pause 這里是可執(zhí)行文件在同級(jí)目錄下,可以添加相對(duì)路徑也可以放對(duì)決路徑; test1.bat 等文件可以被執(zhí)行,2.png 像圖片之類的可以被直接打開;

如果是多個(gè)條件,建議適當(dāng)使用括號(hào)把各條件包起來;

if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) else (echo comment3 )

2. if errorlevel number

執(zhí)行返回值 ,返回的是數(shù)字;一般DOS程序會(huì)在執(zhí)行結(jié)束后返回一個(gè)數(shù)字來代表程序運(yùn)行的結(jié)果,稱為錯(cuò)誤碼 errorlevel 或者返回碼,有點(diǎn)返回值那味了是不
常見的返回碼為 : 0 1

errorlevel 0 成功 errorlevel 1 失敗

@echo off if exist 2.png (2.png)^ else (echo "the file not exist") ::當(dāng)存在second.bat 時(shí)就執(zhí)行這個(gè)批處理文件 否則打印"the file not exist" if errorlevel 0 (echo operate sucess) else (echo not sucess) pause ===================== operate sucess 請(qǐng)按任意鍵繼續(xù). . .

3. for 循環(huán)

for 命令是一個(gè)比較復(fù)雜的命令,主要用于參數(shù)在指定的范圍內(nèi)循環(huán)執(zhí)行命令;

基本命令:
FOR %%variable IN (set) DO command [command-parameters]
FOR 參數(shù) %%變量名 IN (相關(guān)文件或命令) DO 執(zhí)行的命令

參數(shù)含義
%%variable指定一個(gè)單一字母可替換的參數(shù)。
(set)指定一個(gè)或一組文件。可以使用通配符。
command指定對(duì)每個(gè)文件執(zhí)行的命令。
command-parameters為特定命令指定參數(shù)或命令行開關(guān)。

參數(shù): FOR有4個(gè)參數(shù) /d /l /r /f

參數(shù)含義
/l含開關(guān)/L的for語句,可以根據(jù)set里面的設(shè)置進(jìn)行循環(huán),從而實(shí)現(xiàn)對(duì)循環(huán)次數(shù)的直接控制
/d表示僅為目錄 , 它只能顯示當(dāng)前目錄下的目錄名字;如果集里面包含通配符,則指定與目錄名匹配,而不與文件名匹配
/r/R參數(shù)之后還可帶盤符及路徑;
/f含開關(guān)/F的for語句具有最強(qiáng)大的功能,它能夠?qū)ψ址M(jìn)行操作,也能夠?qū)γ畹姆祷刂颠M(jìn)行操作,還可以訪問硬盤上的ASCII碼文件,比如txt文檔等

/L

命令:
FOR /L %%variable IN (start,step,end) DO command
其中,start為開始計(jì)數(shù)的初始值,step為每次遞增的值,end為結(jié)束值。當(dāng)end小于start時(shí),step需要設(shè)置為負(fù)數(shù)

for /L %%i in (0,5,100) do (echo %%i& md %%i& mkdir %%i\test) ============================== 循環(huán)從0,遞增5,直至到達(dá)100;同時(shí)顯示數(shù)字,新建文件夾并且在文件夾下新建test文件

求和

@echo offset /a sum=0 for /l %%i in (1,1,100) do set /a sum=sum+%%i echo %sum% pause ================================ 5050 請(qǐng)按任意鍵繼續(xù). . .

/d

命令:
FOR /D %variable IN (set) DO command [command-parameters]

@echo offecho %cd% "current directory path" d: for /D %%a in (*A*) do echo %%a >> %~dp0\wordin_dirname.txt pause 如果這里不切換到,D盤的話,/d只閑顯示腳本路徑下的文件下信息,寫到txt文件中;

/r

FOR /R [[drive:]path] %%variable IN (set) DO command [command-parameters]
/r 后無路徑:對(duì)腳本所在路徑遍歷
/r 后跟路徑:對(duì)跟的指定路徑遍歷
含開關(guān)/R的命令有時(shí)候被用于通過遍歷文件夾來查找某一個(gè)文件或文件夾

@echo offecho %cd% "current directory path" path=d: for /r %path% %%i in (*.txt) do echo %%i >> %~dp0\file_endswith.txt pause ============================== 指定path 下的 以.txt 結(jié)尾的文件 追加寫在 腳本路徑下file_endswith.txt 文件中; D:\FilesPath3.txt D:\360\360Safe\deepscan\QVM\model_360nb\update.txt D:\360RecycleBin\!此文件夾為使用360清理后的垃圾備份文件.txt D:\360RecycleBin\1\1738c7987314ed4166ffc1383a0e4f59.txt D:\360RecycleBin\1\f006782cc4d3ebd69dda70eef55d39d0.txt D:\360RecycleBin\104\7119dfac6242b7776fdd80dd7e0cd986.txt ........

/F

命令:
FOR /F [“options”] %%variable IN (set) DO command
其中,set為(“string”、‘command’、file-set)中的一個(gè);options是(eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq)中的一個(gè)或多個(gè)的組合。一般情況下,使用較多的是skip、tokens、delims三個(gè)選項(xiàng);

選項(xiàng)含義
skip=n從文本開始忽略n行
delims指定定界符
tokens提取列。 通俗講,共同提取每一行的第m小節(jié)的內(nèi)容。因此,可以用該命令來指定提取文本信息。

tokens 講解

tokens組合含義
tokens=提取全部。
tokens=m提取第m列。
tokens=m,n提取第m列和第n列。
tokens=m-n提取第m列至第n列。
tokens=*刪除每行前面的空格。忽略行首的所有空格。
tokens=m*提取第m列以后的所有字符,星號(hào)表示剩余的字符。
tokens=m,*提取第m列以后的所有字符,星號(hào)表示剩余的字符。

輸出變量的個(gè)數(shù)由定義了的tokens決定。

demo
對(duì)日志符號(hào)替換

@echo off Date For /f "tokens=1-3 delims=-/. " %%j In ('Date /T') do echo %%j year %%k month %%l day pause =============================== #把1到3列 "/” 替換成 對(duì)應(yīng)的 當(dāng)前日期: 2022/07/17 周日 輸入新日期: (年月日) 2022 year 07 month 17 day 請(qǐng)按任意鍵繼續(xù). . .

顯示文檔信息

for /f "delims=" %%a in (FilesPath3.txt) do echo.%%a # 顯示文檔內(nèi)所有行信息; for /f "delims= skip=12" %%a in (FilesPath3.txt) do echo.%%a# 從第12行開始顯示

4. continue 和 break

利用 goto 實(shí)現(xiàn)程序中常用的 continue 和 break 命令
ontinue: 在 for 循環(huán)的最后一行寫上一個(gè)標(biāo)簽,跳轉(zhuǎn)到這位置即可

break: 在 for 循環(huán)的外面的下一句寫上一個(gè)標(biāo)簽,跳轉(zhuǎn)到這位置即可
demo

for /F ["options"] %variable IN (command) DO (... do command ...if ... goto continueif ... goto break... do command ...:continue):break

4> 其他相關(guān)常用命令

1. 路徑相關(guān)

功能命令區(qū)別
當(dāng)前盤符%~d0
當(dāng)前路徑%cd%表示執(zhí)行命令時(shí)所在的目錄;可以改變的,因?yàn)樗硎镜氖钱?dāng)前目錄,如果在批處理中使用了cd命令就會(huì)改變他的值
當(dāng)前執(zhí)行命令行%0
當(dāng)前bat文件路徑%~dp0表示批處理文件所在的目錄;是在執(zhí)行某個(gè)批處理結(jié)束之前是不會(huì)改變的,因?yàn)榇淼氖悄_本文件在磁盤的位置
當(dāng)前bat文件短路徑%~dp0

demo

echo %~d0 echo %cd% echo %0 echo %~dp0 echo %~dp0 cd /d %~dp0 pause =================== C: 當(dāng)前盤符 C:\Users\CHH_PC\Desktop\test 當(dāng)前路徑 "C:\Users\CHH_PC\Desktop\test\test.bat" 當(dāng)前執(zhí)行命令行 C:\Users\CHH_PC\Desktop\test\ 當(dāng)前bat文件路徑 C:\Users\CHH_PC\Desktop\test\ 當(dāng)前bat文件短路徑 請(qǐng)按任意鍵繼續(xù).

查詢上級(jí)目錄可以 cd 再看 %~dp0 信息,這些都會(huì)與dir 等命令配合使用;

@echo off cd /d %~dp0 ::顯示當(dāng)前路徑 echo %cd% cd .. ::顯示上級(jí)目錄路徑 echo %cd% pause

2. 傳參相關(guān)

%[1-9]表示參數(shù),參數(shù)是指在運(yùn)行批處理文件時(shí)在文件名后加的以空格(或者Tab)分隔的字符串。

變量可以從%0到%9,%0表示批處理命令本身,其它參數(shù)字符串用 %1 到 %9 順序表示。

Sample:

call test2.bat “hello” “haha” (執(zhí)行同目錄下的“test2.bat”文件,并輸入兩個(gè)參數(shù))

在“test2.bat”文件里寫:

echo %1 (打印: “hello”)

echo %2 (打印: “haha”)

echo %0 (打印: test2.bat)

echo %19 (打印: "hello"9)

3,字符串處理

A: 分割

%源字符串:~起始值,截取長(zhǎng)度% (起始值從0開始;截取長(zhǎng)度是可選的,如果省略逗號(hào)和截取長(zhǎng)度,將會(huì)從起始值截取到結(jié)尾;

截取長(zhǎng)度如果是負(fù)數(shù),表示截取到倒數(shù)第幾個(gè)。)

“%time%” 顯示如:“11:04:23.03” (完整的時(shí)間"hh:mm:ss.tt")

“%time:~0,5%” 顯示"hh:mm"(即"11:04"),其中0表示從右向左移位操作的個(gè)數(shù),5表示從左向右移位操作的個(gè)數(shù)

“%time:~0,8%” 顯示標(biāo)準(zhǔn)時(shí)間格式"hh:mm:ss"(即"11:04:23",前8個(gè)字符串)

"%time:~3,-3%“顯示"mm:ss”(即從第4個(gè)開始,截去最后3個(gè)的字符串)

“%time:~3%” 顯示"04:23.03"(即去掉前4個(gè)字符串)

“%time:~-3%” 顯示".tt"(即最后3個(gè)字符串)

上面的字串分割格式,也可以用于其它地方,如目錄路徑:“%cd:~0,10%”

@echo off echo %cd% echo %cd:~0,5% echo %cd:~0,8% echo %cd:~3,-3% echo %cd:~3% echo %cd:~-3% pause ============= C:\Users\CHH_PC\Desktop\test C:\Us C:\Users Users\CHH_PC\Desktop\t Users\CHH_PC\Desktop\test est 請(qǐng)按任意鍵繼續(xù). . .

B: 替換

@echo off set a="C:\Users\CHH_PC\Desktop\test" set path1=%a:\=&% echo %path1% pause ==================== # 替換\ 為& 符號(hào) "C:&Users&CHH_PC&Desktop&test" 請(qǐng)按任意鍵繼續(xù). . .

C:拼接

由于沒有直接的字符串合并函數(shù),只能用笨方法

@echo off set a=C:\Userst set b=\CHH_PC\ set c=Desktop\ set d=test set str1=%a%%b%%c%%d% echo %str1% pause ============ C:\Userst\CHH_PC\Desktop\test 請(qǐng)按任意鍵繼續(xù). . .

D: 計(jì)算長(zhǎng)度

沒有現(xiàn)成的函數(shù)。如下程序利用 goto形成循環(huán),不斷將字符串截短1,并記錄截短的次數(shù),到字符串變成空時(shí)的次數(shù)即長(zhǎng)度;

@echo off setlocal enabledelayedexpansion if exist report.txt del report.txt set line=0 for /f "tokens=* delims=" %%a in (new.txt) do ( set var=%%a set /a line+=1 set num=0 call :loop echo !line! >> report.txt ) :loop if not "!var!"=="" ( set /a num+=1 set var=!var:~1! goto loop ) else ( goto :eof ) pause =======================1 . . . 15

E: 截取字符,傳遞參數(shù)

@echo off set ifo=abcdefghijklmnopqrstuvwxyz0123456789 echo %ifo% echo ============================== echo first 5 char echo %ifo:~0,5% echo lastest 5 char echo %ifo:~-5% echo from first to lastest 5 char echo %ifo:~0,-5% echo from fourth ,long 5 echo %ifo:~3,5% echo from start at lastest 14 char ,long 5 echo %ifo:~-14,5% pause ==========================abcdefghijklmnopqrstuvwxyz0123456789 ============================== first 5 char abcde lastest 5 char 56789 from first to lastest 5 char abcdefghijklmnopqrstuvwxyz01234 from fourth ,long 5 defgh from start at lastest 14 char ,long 5 wxyz0 請(qǐng)按任意鍵繼續(xù). . .

4. set 命令

A: set 賦值

等號(hào)兩邊不要有空格
變量值包含特殊字符需用雙引號(hào)
避免使用系統(tǒng)環(huán)境變量同名的自定義變量;如:path , date , errorlevel 等
語法可行但不推薦使用,set /a x=y=100;set /a x=1,y=2

@echo off set str=%cd% echo %str% set "str1=Bat&Home" echo " %str1%" pause =================== C:\Users\CHH_PC\Desktop\test " Bat&Home" 請(qǐng)按任意鍵繼續(xù). . .

B: set /p 讀取輸入

交互獲取用戶輸入
讀取文件的內(nèi)容

@echo off set /p input=請(qǐng)輸入一個(gè)字符串: echo %input% pause ============ @echo off set /p input=<"new.txt" echo %input% pause

輸出是否回車

@echo off for %%i in (aas aa zx aasc) do ( set /p =%%i ) pause ================ aas aa zx aasc 請(qǐng)按任意鍵繼續(xù). . . @echo off for %%i in (aas aa zx aasc) do ( set /p =%%i<nul ) pause ================ aasaazxaasc請(qǐng)按任意鍵繼續(xù). .

C: set /a 數(shù)學(xué)運(yùn)算

等號(hào)右側(cè)的變量可以省略百分號(hào)

@echo off set x=99 set y=100 set /a n=%x%+%y% # 等價(jià)set /a n=x+y echo %n% pause ====================== 199 請(qǐng)按任意鍵繼續(xù). .

八進(jìn)制和十六進(jìn)制轉(zhuǎn)換成十進(jìn)制

@echo off set /a m=012 set /a n=0xA echo %m% %n% pause ============== 10 10 請(qǐng)按任意鍵繼續(xù). . .

BAT文件里面進(jìn)行“取余”操作的時(shí)候需要使用兩個(gè)百分號(hào)

@echo off set /a m=10%%3 echo %m% pause ================= 1 請(qǐng)按任意鍵繼續(xù). . .

邏輯運(yùn)算的特殊字符需要使用雙引號(hào)

@echo off set /a "m=1<<10" set /a n=1"<<"10 echo %m% %n% pause

不支持直接計(jì)算超大數(shù)(例如磁盤空間的計(jì)算)
不支持直接計(jì)算浮點(diǎn)數(shù)

/A 命令行開關(guān)指定等號(hào)右邊的字符串為被評(píng)估的數(shù)字表達(dá)式。該表達(dá)式
評(píng)估器很簡(jiǎn)單并以遞減的優(yōu)先權(quán)順序支持下列操作:

表達(dá)含義
()分組
! ~ -一元運(yùn)算符
“* / %”算數(shù)運(yùn)算符
“+ -”算數(shù)運(yùn)算符
<< >>二進(jìn)制邏輯移位
-二進(jìn)制按位“與”
^二進(jìn)制按位“異”
I二進(jìn)制按位“或”
= *= /= %= += -=算數(shù)賦值
= ^== <<= >>=
,表達(dá)式分隔符

D: set 字符截取& 替換

set str=字符串 ,其方法和上面截取字符,傳遞參數(shù) 一致

E: set 賦值變量

F: set 字符開頭變量

直接執(zhí)行 set 命令可以顯示系統(tǒng)環(huán)境變量
命令 set xxx 可以顯示所有以 xxx 開頭的變量
顯示結(jié)果按照變量名進(jìn)行排序

@echo off set xxx1=A set xxx3=C set xxx2=B set xxx echo xxx pause ================== xxx1=A xxx2=B xxx3=C xxx 請(qǐng)按任意鍵繼續(xù). . @echo off for %%i in (a b c d e f g ) do ( set #%%i=%%i ) for /f "tokens=2 delims==" %%i in ('set #') do ( echo %%i ) pause ====================== a b c d e f g 請(qǐng)按任意鍵繼續(xù). .

5. ping 命令

用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS][-r count] [-s count] [[-j host-list] | [-k host-list]][-w timeout] [-R] [-S srcaddr] [-c compartment] [-p][-4] [-6] target_name選項(xiàng):-t Ping 指定的主機(jī),直到停止。若要查看統(tǒng)計(jì)信息并繼續(xù)操作,請(qǐng)鍵入 Ctrl+Break;若要停止,請(qǐng)鍵入 Ctrl+C。-a 將地址解析為主機(jī)名。-n count 要發(fā)送的回顯請(qǐng)求數(shù)。-l size 發(fā)送緩沖區(qū)大小。-f 在數(shù)據(jù)包中設(shè)置“不分段”標(biāo)記(僅適用于 IPv4)。-i TTL 生存時(shí)間。-v TOS 服務(wù)類型(僅適用于 IPv4。該設(shè)置已被棄用,對(duì) IP 標(biāo)頭中的服務(wù)類型字段沒有任何影響)。-r count 記錄計(jì)數(shù)躍點(diǎn)的路由(僅適用于 IPv4)。-s count 計(jì)數(shù)躍點(diǎn)的時(shí)間戳(僅適用于 IPv4)。-j host-list 與主機(jī)列表一起使用的松散源路由(僅適用于 IPv4)。-k host-list 與主機(jī)列表一起使用的嚴(yán)格源路由(僅適用于 IPv4)。-w timeout 等待每次回復(fù)的超時(shí)時(shí)間(毫秒)。-R 同樣使用路由標(biāo)頭測(cè)試反向路由(僅適用于 IPv6)。根據(jù) RFC 5095,已棄用此路由標(biāo)頭。如果使用此標(biāo)頭,某些系統(tǒng)可能丟棄回顯請(qǐng)求。-S srcaddr 要使用的源地址。-c compartment 路由隔離艙標(biāo)識(shí)符。-p Ping Hyper-V 網(wǎng)絡(luò)虛擬化提供程序地址。-4 強(qiáng)制使用 IPv4。-6 強(qiáng)制使用 IPv6。

demo

ping 192.168.16.108 -4 -t ========================= 來自 192.168.16.108 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=64 來自 192.168.16.108 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=64 來自 192.168.16.108 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=64 來自 192.168.16.108 的回復(fù): 字節(jié)=32 時(shí)間<1ms TTL=64192.168.16.108 的 Ping 統(tǒng)計(jì)信息:數(shù)據(jù)包: 已發(fā)送 = 6,已接收 = 6,丟失 = 0 (0% 丟失), 往返行程的估計(jì)時(shí)間(以毫秒為單位):最短 = 0ms,最長(zhǎng) = 0ms,平均 = 0ms Control-C

6. shutdown命令

用法: shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f][/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]===============================/? 顯示幫助。這與不鍵入任何選項(xiàng)是一樣的。 /i 顯示圖形用戶界面(GUI)。這必須是第一個(gè)選項(xiàng)。 /l 注銷。這不能與 /m 或 /d 選項(xiàng)一起使用。 /s 關(guān)閉計(jì)算機(jī)。 /sg 關(guān)閉計(jì)算機(jī)。在下一次啟動(dòng)時(shí),如果啟用了自動(dòng)重啟登錄,則將自動(dòng)登錄并鎖定上次交互登錄后,重啟任何已注冊(cè)的應(yīng)用程序。 /r 完全關(guān)閉并重啟計(jì)算機(jī)。 /g 完全關(guān)閉并重啟計(jì)算機(jī)。重新啟動(dòng)系統(tǒng)后,如果啟用了自動(dòng)重啟登錄,則將自動(dòng)登錄并鎖定上次交互用戶。登錄后,重啟任何已注冊(cè)的應(yīng)用程序。 /a 中止系統(tǒng)關(guān)閉。這只能在超時(shí)期間使用。與 /fw 結(jié)合使用,以清除任何未完成的至固 /p 關(guān)閉本地計(jì)算機(jī),沒有超時(shí)或警告。可以與 /d 和 /f 選項(xiàng)一起使用。 /h 休眠本地計(jì)算機(jī)。可以與 /f 選項(xiàng)一起使用。 /hybrid 執(zhí)行計(jì)算機(jī)關(guān)閉并進(jìn)行準(zhǔn)備以快速啟動(dòng)。必須與 /s 選項(xiàng)一起使用。 /fw 與關(guān)閉選項(xiàng)結(jié)合使用,使下次啟動(dòng)轉(zhuǎn)到固件用戶界面。 /e 記錄計(jì)算機(jī)意外關(guān)閉的原因。 /o 轉(zhuǎn)到高級(jí)啟動(dòng)選項(xiàng)菜單并重新啟動(dòng)計(jì)算機(jī)。必須與 /r 選項(xiàng)一起使用。 /m \\computer 指定目標(biāo)計(jì)算機(jī)。 /t xxx 將關(guān)閉前的超時(shí)時(shí)間設(shè)置為 xxx 秒。有效范圍是 0-315360000 (10 年),默認(rèn)值為如果超時(shí)期限大于 0,則 /f 參數(shù)為/f 參數(shù)。 /c "comment" 注釋重啟或關(guān)閉的原因。最多允許 512 個(gè)字符。 /f 強(qiáng)制關(guān)閉正在運(yùn)行的應(yīng)用程序而不事先警告用當(dāng)大于 0 的值為 ,隱含 /f 參數(shù) 則默示為 /f 參數(shù)。 /d [p|u:]xx:yy 提供重新啟動(dòng)或關(guān)閉的原因。p 指示重啟或關(guān)閉是計(jì)劃內(nèi)的。u 指示原因是用戶定義的。如果未指定 p 和 u,則 啟動(dòng)或關(guān)閉 是計(jì)劃外的。xx 是主要原因編號(hào)(小于 256 的正整數(shù))。yy 是次要原因編號(hào)(小于 65536 的正整數(shù))。

7. choice 命令

choice 使用此命令可以讓用戶輸入一個(gè)字符(用于選擇),從而根據(jù)用戶的選擇返回不同的 errorlevel,

然后配合 if errorlevel 選擇運(yùn)行不同的命令。

注意:choice命令為DOS或者Windows系統(tǒng)提供的外部命令,不同版本的choice命令語法會(huì)稍有不同,請(qǐng)用choice /?查看用法。

choice 使用此命令可以讓用戶輸入一個(gè)字符,從而運(yùn)行不同的命令。

使用時(shí)應(yīng)該加/c:參數(shù),c:后應(yīng)寫提示可輸入的字符,之間無空格。它的返回碼為1234……

Sample: choice /c:dme defrag,mem,end

將顯示: defrag,mem,end[D,M,E]?

Sample:

choice /c:dme defrag,mem,end

if errorlevel 3 goto defrag (應(yīng)先判斷數(shù)值最高的錯(cuò)誤碼)

if errorlevel 2 goto mem

if errotlevel 1 goto end

四:題外話

1> call 文件的相互傳參

test.bat

@echo off setlocal enabledelayedexpansion set x=%1% set y=%2% set /a M=%x%+%y% echo %M% echo call test1.bat %M% call test1.bat %M% pause

test1.bat

@echo off set input=%1% echo it is test running number %input%! pause 輸出: C:\Users\CHH_PC\Desktop\test>test.bat 1,2 3 call test1.bat 3it is test running number 3 請(qǐng)按任意鍵繼續(xù). . . 請(qǐng)按任意鍵繼續(xù). .

2> setlocal enabledelayedexpansion 含義

設(shè)置本地為延遲擴(kuò)展。其實(shí)也就是:延遲變量,全稱"延遲環(huán)境變量擴(kuò)展",
在cmd執(zhí)行命令前會(huì)對(duì)腳本進(jìn)行預(yù)處理,其中有一個(gè)過程是變量識(shí)別過程,在這個(gè)過程中,如果有兩個(gè)%括起來的如%value%類似這樣的變量,就會(huì)對(duì)其進(jìn)行識(shí)別,并且查找這個(gè)變量對(duì)應(yīng)的值,再而將值替換掉這個(gè)變量,這個(gè)替換值的過程,就叫做變量擴(kuò)展,然后再執(zhí)行命令。

3> bat 批示處理詳解-2

https://blog.csdn.net/weixin_42914706/article/details/125961200

總結(jié)

以上是生活随笔為你收集整理的bat 批示处理详解-1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。