bat里的字符串不需要""括起来
30 setlocal 和 endlocal
设置”命令扩展名”和”延缓环境变量扩充”
SETLOCAL ENABLEEXTENSIONS #启用"命令扩展名"
SETLOCAL DISABLEEXTENSIONS #停用"命令扩展名"
SETLOCAL ENABLEDELAYEDEXPANSION #启用"延缓环境变量扩充"
SETLOCAL DISABLEDELAYEDEXPANSION #停用"延缓环境变量扩充"
ENDLOCAL #恢复到使用SETLOCAL语句以前的状态
“命令扩展名”默认为启用
“延缓环境变量扩充”默认为停用
批处理结束系统会自动恢复默认值
可以修改注册表以禁用"命令扩展名",详见 cmd /? 。所以用到"命令扩展名"的程
序,建议在开头和结尾加上 SETLOCAL ENABLEEXTENSIONS 和 ENDLOCAL 语句,以确
保程序能在其它系统上正确运行
"延缓环境变量扩充"主要用于 if 和 for 的符合语句,在 set 的说明里有其实用例程
set 的基础用法
1.1 单独输入set
语法: set
返回系统变量
1.2设置变量 set 和echo 联动
语法:set a=3
具体例子
set a=3
echo %a%
语法注意点
- =前后不能有空格,否则语法不成立
- echo 显示变量语法
- echo %变量名% 而不能是 echo var
- echo var 返回的只是var 而不是变量的值
1.3 set 附带的两个开关 set /a 和 set /p
语法:注意,不区分大小写 /a /A都可以
set var=value rem 设置变量
SET /P variable=[promptString] 接受界面参数
set /p var=请你输入一个数字: rem需要用户输入
set /a expression rem做表达式数值运算
set /a var1=var2+var3 rem做表达式数值运算
例子1
set /a c=1+2
例子2
set m=1
set n=2
set y=m+n
错误用法(正确写法是 set /a c=1+2)
set c=1+2
echo c rem 输出结果 c
echo %c% rem 输出结果 1+2
1.4 带重定向,用set设置变量 =< (不是<)读入文件内容
set /p a=<文件
特别注意语法点
- set /p
- a=<
1.5 查找和截取字符串
语法:
set b=%a:~1,n%
set c=%a:~0,-n% 倒数的n
记住字符串从0开始
注意 :和 ~
1.6 替换字符串
语法:
set c=%a:xxx=yyy
注意 :和 =