天天看點

bat 批處理腳本基礎前言常用指令常用特殊符号程式執行個體

目錄

  • 前言
  • 常用指令
  • 常用特殊符号
  • 程式執行個體
    • 多個整數相加的子程式
    • 随機數的生成(%random%)
    • 産生指定區間的随機值

         ~~~~~~~~         因為想要面對一個新的開始,一個人必須有夢想、有希望、有對未來的憧憬。如果沒有這些,就不叫新的開始,而叫逃亡。 ​​​​

                                                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                                                                                 ————瑪麗亞·杜埃尼亞斯

前言

批處理檔案是将一系列指令按照一定的順序集合為一個可執行的文本檔案,其擴充名為bat或者cmd,那麼這些指令就被統稱為批處理指令。

小技巧:ctrl+c組合鍵可以強行終止一個批處理的執行過程。

常用指令

rem和::和%内容%    #注釋,rem會回顯,::不回顯。:後面非字母數字的一個特殊符号都可以起注釋作用。

echo和@           #@字元放在指令前面将關閉該指令回顯。echo off/on 關閉打開回顯。echo 輸出資訊内容

pause             #暫停

errorlevel        #程式傳回碼。echo%errorlevel%可以檢視上一條指令狀态,0為成功,1為失敗

title             #設定cmd視窗标題

color             #設定控制台顔色,第一個為背景,第二個為前景。具體檢視cmd幫助  color /?

mode              #配置系統裝置

goto和:          #跳轉,跳轉到:後面的内容

find              #檔案中搜尋字元串,具體檢視幫助 find /?

start             #調用外部程式指令

assoc             #設定檔案擴充名關聯,關聯到檔案類型

ftype             #設定檔案類型關聯,關聯到執行程式和參數

pushd和popd       #切換和恢複目錄

call              #調用另一個批處理,另一個執行完再傳回

shift             #更改批處理檔案中可替換參數的位置

if                #條件判斷語句
for               #循環語句。for/參數 %變量 in(集)指令 。參數:/d 指定目錄 /r 指定盤符 /l 次數 /f打開集

setlocal enabledelayedexpansion  #動态指派

attrib            #顯示或更改檔案屬性
           

常用特殊符号

@ 指令行回顯屏蔽符
% 批處理變量引導符
>重定向符
>>追加重定向符
<、>&、<& 重定向符
| 指令管道符
^ 轉義字元
& 組合指令,出錯不影響後面指令執行
&& 組合指令,出錯後面指令不執行
|| 組合指令
"" 字元串界定符
, 逗号
; 分号
() 括号
! 感歎号
           

程式執行個體

多個整數相加的子程式

子程式一般放在最後,并且注意在主程式最後要加上exit或跳轉語句,避免錯誤的進入子過程。

子程式和主程式中的變量都是全局變量,其作用範圍都是整個批處理程式。

@echo off
set sum=0
call :sub 10 20 35 40 50
echo 資料求和結果:%sum%
pause
goto :eof
 
:sub
rem 參數1為傳回變量名稱
set /a sum+=%1
shift /1 
if not "%1"=="" goto sub
 :eof
           

程式執行結果如圖

bat 批處理腳本基礎前言常用指令常用特殊符号程式執行個體

随機數的生成(%random%)

%RANDOM% 系統變量 傳回 0 到 32767 之間的任意十進制數字。由 Cmd.exe 生成。2的15次方等于32768,上面的0~32767實際就是15位二進制數的範圍。由此我們可以利用系統變量%random%,求餘運算%%,字元串處理等實作随機處理。簡單代碼如下:

@echo off
setlocal enabledelayedexpansion
:num
echo 請輸入随機數的位數
set/p "n=>"
if %n%==1  goto n1
if %n%==2  goto n2
if %n%==3  goto n3
if %n%==4  goto n4
echo 輸入錯誤,請重新輸入!
goto num
:n1
for %%i in (1) do (
set /a randomNum=!random!%%10
echo 随機數:!randomNum!
goto num
)
:n2
for %%i in (1) do (
set /a randomNum=!random!%%100
echo 随機數:!randomNum!
goto num
)
:n3
for %%i in (1) do (
set /a randomNum=!random!%%1000
echo 随機數:!randomNum!
goto num
)
:n4
for %%i in (1) do (
set /a randomNum=!random!%%10000
echo 随機數:!randomNum!
)
pause
goto num
           

或者這個代碼

@echo off
setlocal enabledelayedexpansion
:num
echo 請輸入随機數的位數
set/p "n=>"
if %n% gtr 4 (
echo 輸入錯誤,請重新輸入!
goto num
)
if %n%==1 (
set number=10
)
if %n%==2 (
set number=100
)
if %n%==3 (
set number=1000
)
if %n%==4 (
set number=10000
)
for %%i in (1) do (
set /a randomNum=!random!%%!number!
echo 随機數:!randomNum!
goto num
)
pause
goto num
           

執行結果

bat 批處理腳本基礎前言常用指令常用特殊符号程式執行個體

産生指定區間的随機值

通用的公式%random%%%(end-start+1)+start來産生[start,end]區間裡的随機數,

REM 産生指定數字之間的随機數(5個)
@echo off 
setlocal enabledelayedexpansion 
@REM 設定随機數的最小和最大值以及求模用的變量 
echo 請輸入起始值:
set/p "start=>"
echo 請輸入結束值:
set/p "end=>"
set /a mod=!end!-!start!+1
 
for /l %%i in (1,1,5) do ( 
REM 産生[start,end]之間的随機數 
set /a r=!random!%%!mod!+!start! 
echo. 
echo 第%%i個随機值:!r!)
pause
           

運作結果如下

bat 批處理腳本基礎前言常用指令常用特殊符号程式執行個體