一同事问批处理脚本怎样截取一段文本,试了一下,发现仍是有不少语法不熟悉,特抽时间记录.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=请输入文本: