跟著芒果一起,好好學(xué)習(xí),,天天向上~ 今天芒果要跟大家一起介(tu)紹(cao)一下bat批處理命令~ 批處理文件,,顧名思義,是將一系列命令按一定的順序集合為一個(gè)可執(zhí)行的文本文件,,其擴(kuò)展名為BAT或者CMD,。這些命令統(tǒng)稱批處理命令。 首先給大家大概介紹一下我們常用的幾個(gè)命令: 1,、rem和:: rem為注釋命令,,一般用來(lái)給腳本加上注釋,rem命令后內(nèi)容不會(huì)被執(zhí)行,,但是能回顯,。 ::也可以起到注釋作用,而且看起來(lái)也會(huì)更加簡(jiǎn)潔明了,,跟其他語(yǔ)言的注釋服類似,,但是::后的命令不會(huì)回顯。(這里要注意一下在批處理腳本里,,:被視為標(biāo)記,,當(dāng):后緊跟一個(gè)以字母開(kāi)頭的字符串時(shí),可以被goto語(yǔ)句識(shí)別,,如果緊跟非字母的特殊符號(hào)時(shí),,goto語(yǔ)句無(wú)法識(shí)別,即可以起到注釋的作用) 例: rem this is a note :: this is a note 2,、echo和@ echo命令可以用來(lái)顯示消息,,和打開(kāi)或關(guān)閉回顯功能。 顯示消息: echo Hello world! 打開(kāi)或者關(guān)閉回顯: echo on/off 將@字符放在命令前面可以關(guān)閉這條命令的回顯,,無(wú)論此時(shí)回顯功能是關(guān)閉還是打開(kāi),。所以我們經(jīng)常能在bat腳本第一行看到@echo off,這樣整個(gè)腳本的命令都不會(huì)回顯,。 3,、pause pause的意思是暫停,顧名思義,,這條命令意思就是系統(tǒng)停止執(zhí)行下面的命令,。例:pause 運(yùn)行時(shí)會(huì)顯示: 請(qǐng)按任意鍵繼續(xù). . . 此條命令我們經(jīng)常在goto語(yǔ)句、if語(yǔ)句或者for語(yǔ)句中看到,。 4,、goto goto的意思是跳轉(zhuǎn),在bat腳本中我們使用“:label”來(lái)構(gòu)建一個(gè)標(biāo)簽,然后可以使用“goto label”跳轉(zhuǎn)到“:label”處(這里label是指定批處理程序中用作標(biāo)簽的文字字符串),,標(biāo)簽必須單獨(dú)一行,。例: @echo off if "%1"=="A" (goto A) else goto B :A echo 您輸入的字母是:A pause exit :B echo 您輸入的字母是:B pause exit 5、call call命令可以從批處理程序調(diào)用另一個(gè)批處理程序,,當(dāng)執(zhí)行完后,,再執(zhí)行原來(lái)的批處理。命令格式: call [drive:][path] filename [batch-parameters] [drive:][path] filename指定要調(diào)用批處理程序的位置和名稱,,filename必須是.bat或者.cmd擴(kuò)展名文件,。batch-parameters指定批處理程序的參數(shù)項(xiàng)。 例: test1.bat: call test2.bat A B echo C test2.bat: echo %1 echo %2 顯示結(jié)果應(yīng)該為 A B C 6,、start start命令用來(lái)調(diào)用外部程序,,所有的DOS命令和命令程序都可以由start命令來(lái)調(diào)用。該外部程序?qū)⒃谛麓翱谥羞\(yùn)行,,bat腳本會(huì)繼續(xù)執(zhí)行下去,,不理會(huì)外部程序的運(yùn)行狀況。 例:start"C:\Program Files\internet explorer\iexplore.exe" “https://www.baidu.com/” 7,、if if命令執(zhí)行bat腳本里的條件處理,,這里需要注意(吐槽的是),,判讀與執(zhí)行語(yǔ)句要么放在同一行: if 判斷語(yǔ)句 (執(zhí)行語(yǔ)句1) else 執(zhí)行語(yǔ)句2 如果想要以多行輸入,,必須以這種形式(對(duì)于一個(gè)強(qiáng)迫癥實(shí)在無(wú)法忍受),否則就會(huì)報(bào)錯(cuò): If 判斷語(yǔ)句 ( 執(zhí)行語(yǔ)句1 ) else ( 執(zhí)行語(yǔ)句2 ) 這里需要注意一下比較運(yùn)算符與其他語(yǔ)言不同: EQU - 等于 (一般使用“==”) NEQ - 不等于 (沒(méi)有 “!=”,改用“ if not 1==1 ”的寫法) LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于 例:if"%1"=="A" (echo A) else echo B 8,、for for命令是對(duì)一組文件中的每一個(gè)文件執(zhí)行某個(gè)特定命令,。命令格式: for %variable in (set) do command[command-parameters] 其中%variabl是指定一個(gè)單一字母可替換的參數(shù); (set)指定一個(gè)或一組文件,,可以使用通配符,; command指定對(duì)每個(gè)文件執(zhí)行的命令; command-parameters為特定命令指定參數(shù)或命令行開(kāi)關(guān),。 例:for %%i in (1 2 3 4 5) do (echo %%i) 如果啟用命令擴(kuò)展,,則會(huì)支持下列for命令的其他格式: for /D %variable in (set) do command[command-parameters] 如果集中包含通配符,則指定與目錄名匹配,,而不與文件名匹配,。 例:for %%d in (*.txt) do (echo %%d) 顯示當(dāng)前目錄下所有的.txt文件 例:for /D %%d in (*test*) do (echo %%d) 顯示當(dāng)前目錄下所有包含有test的目錄名 for /R [[drive:]path] %variable in(set) do command [command-parameters] 檢查以 [drive:]path 為根的目錄樹,指向每個(gè)目錄中的 FOR 語(yǔ)句,。如果在 /R 后沒(méi)有指定目錄規(guī)范,,則使用當(dāng)前目錄。如果集僅為一個(gè)單點(diǎn)(.)字符,,則枚舉該目錄樹,。 例:for /R C:\Users\Desktop %%d in (*.txt) do (echo %%d) 顯示桌面所有的.txt文件 FOR /L %variable IN (start,step,end)DO command [command-parameters] 該集表示以增量形式從開(kāi)始到結(jié)束的一個(gè)數(shù)字序列。 例:for /L %%i in (1,2,10) do echo %%i 會(huì)顯示1、3,、5,、7、9 for /F ["options"] %variablein (file-set) do command [command-parameters] for /F ["options"] %variablein ("string") do command [command-parameters] for /F ["options"] %variablein ('command') do command [command-parameters] file-set為一個(gè)或多個(gè)文件名,。繼續(xù)到 file-set中的下一個(gè)文件之前,,每份文件都被打開(kāi)、讀取并經(jīng)過(guò)處理,。處理包括讀取文件,,將其分成一行行的文字,然后將每行解析成零或更多的符號(hào),。然后用已找到的符號(hào)字符串變量值調(diào)用for 循環(huán),。以默認(rèn)方式,/F 通過(guò)每個(gè)文件的每一行中分開(kāi)的第一個(gè)空白符號(hào),。跳過(guò)空白行,。你可通過(guò)指定可選 "options" 參數(shù)替代默認(rèn)解析操作。這個(gè)帶引號(hào)的字符串包括一個(gè)或多個(gè)指定不同解析選項(xiàng)的關(guān)鍵字,。這些關(guān)鍵字為: eol=c - 指一個(gè)行注釋字符的結(jié)尾(就一個(gè)) skip=n - 指在文件開(kāi)始時(shí)忽略的行數(shù),。 delims=xxx - 指分隔符集。這個(gè)替換了空格和制表符的默認(rèn)分隔符集,。 tokens=x,y,m-n - 指每行的哪一個(gè)符號(hào)被傳遞到每個(gè)迭代的 for 本身,。這會(huì) 導(dǎo)致額外變量名稱的分配。m-n格式為一個(gè)范圍,。通過(guò) nth 符號(hào)指定 mth,。如果符號(hào)字符串中的最后一個(gè)字符星號(hào),那么額外的變量將在最后一個(gè)符號(hào)解析之后分配并接受行的保留文本,。 usebackq - 指定新語(yǔ)法已在下類情況中使用:在作為命令執(zhí)行一個(gè)后 引號(hào)的字符串并且一個(gè)單引號(hào)字符為文字字符串命令并允 許在 file-set中使用雙引號(hào)擴(kuò)起文件名稱,。 例:for /F "eol=; tokens=2,3* delims=, " %%i in (test.txt) do @echo %%i %%j %%k 會(huì)分析test.txt 中的每一行; eol=; --忽略以分號(hào)打頭的那些行; tokens=2,3* --將每行中的第二個(gè)和第三個(gè)符號(hào)傳遞給 for 程序體,; delims= , --用逗號(hào)和/或空格定界符號(hào),。 %i --這個(gè) for 程序體的語(yǔ)句引用 %i 來(lái)取得取得的首個(gè)字符串(本例中為第二個(gè)符號(hào)),引用 %j 來(lái)取得第二個(gè)字符串(本例中為第三個(gè)符號(hào))引用 %k來(lái)取得第三個(gè)符號(hào)后的所有剩余符號(hào),。 好了,,今天的學(xué)習(xí)內(nèi)容大家掌握的如何呢?歡迎加芒果微信跟芒果一塊兒討論喲 精益技術(shù) 賦能過(guò)程 |
|