cmd与bat批处理脚本入门

发布时间 2023-11-27 20:16:06作者: C羽言

字符串替换

@echo off
set a1=你是good好孩子
::去掉good
set res=%a1:good=%
echo %res%
::把变量a1中的"你"替换为"她们"
set res=%a1:你=她们%
echo %res%
pause

字符串截取

@echo off
set myvar=abcdefg
echo Original: %myvar%
echo 索引1开始,长度3: 	%myvar:~1,3%
echo 索引2开始,到结尾: 	%myvar:~2%
echo 索引0开始,到倒数第3个: %myvar:~0,-2%
pause

延迟变量扩展

执行cmd或者bat文件是从头向后执行,变量有一个扩展规则,即在执行一个语句块时,CMD在读入这个语句块的时候,该语句块中的变量将会被该语句块之前的同名的变量的值代替。

可以理解为当前语句块中所有的set都在下一句语句块执行时才有效,在当前语句块不做任何事情这样将会对程序的逻辑性产生很大的影响。

为了解决这个问题,cmd提供了一种方式:setlocal [Enable|Disable]DelayedExpansion。
启用后变量的调用将会变为!变量名!,如果使用%变量名%,调用的将会是未使用扩展延迟的状态的变量。

@echo off
setlocal enabledelayedexpansion
set myvar=original
if "%myvar%"=="original" (
    set myvar=modified
    echo Inside parentheses: !myvar!
)

echo Outside parentheses: %myvar%
endlocal
pause