一同事問批處理腳本怎樣截取一段文本,試了一下,發現仍是有不少語法不熟悉,特抽時間記錄.net
@echo off setlocal enabledelayedexpansion set txtstr="" set isContinue="0" for /f "delims=" %%a in (1.txt) do ( if "%%a" == "END-OF-FIELDS" goto end if "!isContinue!" == "1" ( set txtstr=!txtstr! %%a ) if "%%a" == "START-OF-FIELDS" ( set /a isContinue="1" ) ) :end echo %txtstr% pause
命令說明:code
@echo off 表示執行這條命令後關閉全部命令(包括自己命令)的回顯,後面全部的命令均不顯示
get
echo :這個命令叫「回顯」,就是把這條命令的內容顯示到控制檯
數學
echo off :關閉其餘全部命令的回顯(不包括自己)
io
@ : 做用是關閉緊跟其後的一條命令回顯
class
pause : 做用是是程序暫停
變量
「:」 : 用於goto語句跳轉做用
擴展
"delims=" : 指定分隔符,用於分割文本,實例中未指定。
語法
setlocal enabledelayedexpansion:延遲環境變量擴展。批處理腳本在執行時,有一個預處理的過程,會將變量預設置爲初始值。在示例中,若是沒有延遲環境變量擴展設置,isContinue預設置爲1,若是在最後執行 echo isContinue時將輸出「1」; 當設置了setlocal enabledelayedexpansion,批處理腳本在執行時會去找變量值。程序
set /a : 執行數學計算
set /p : 提示用戶輸入。如:set /p a=請輸入文本: