set语句
用set设置自定义变量
set [vaiable=[string]]
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14:: 设置的时候等号俩边不能有空格
set var=abcd
echo var的值为%var%
:: 清除变量,使其成为未定义状态
set var=
if defined var (echo var的值为%var%) else echo var没有赋值
set var1=""
if defined var1 (echo var1的值为%var1%) else echo var1没有赋值
:: set还可以提供一个交互界面,让用户自己输入变量的值,
:: 然后我们在来根据这个值来做相应操作,只需要加一个"/P"参数就可以了!
set /p var2=请输入变
用set进行字符串处理
字符串替换
%PATH:STR1=STR2%
: 将字符串变量%PATH%中的str1替换为str2
例子:1
2
3
4
5
6
7
8
9set a= bbs. bathome.cn
echo 替换前为:"%a%"
:: 删除里面的空格
set var=%a: =%
echo 替换后为: %var%
set var1= %a:.=逗号%
echo 替换后为: %var1%字符串截取
%a:~[m[,n]]%
: ~偏移, m为偏移量(从0开始), n为截取长度
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21set a=www.github.com
echo 源字符串为: %a%
set var=%a:~3,5%
echo 截取的一点: %var%
:: 倒数从-1开始
:: 从第一个到倒数第三个之前的(ww.github.)
set var3=%a:~1,-3%
echo %var3%
:: 倒数第三个之后的(com)
set var4=%a:~-3%
echo %var4%
:: 从倒数第三个开始取俩个字符(co)
set var1=%a:~-3,2%
echo %var1%
::从第三个开始到结束(.github.com)
set var2=%a:~3%
echo %var2%
- 综合实例之求字符串长度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23@echo off
set /p str=请输入任意长度的字符串:
echo 你输入了字符串: "%str%"
call :stringlenth "%str%" num
echo 字符串长度: %num%
pause
:stringlenth
:: echo %1
:: 字符串计算子程序
set substr=%~1
:: echo %substr%
:: 参数%1 为字符串"%str%", %~1则为去掉双引号
if not defined substr goto :eof
set Ret=0
:stringlenth_continue
set /a Ret +=1
set substr=%substr:~0,-1%
echo %substr%
if defined substr goto stringlenth_continue
if not "%2"=="" set %2=%Ret%
goto :eof
用set进行简单计算
set /a expression
- 运算符:
1 | ( ) 分组 |
- 不支持浮点数
- 求余运算符 %%
- 逻辑或取余操作符, 需要用双引号括起来或者用转义字符^:
1
2
3
4
5
6
7
8
9
10set /a var= 1 " " 1 异运算
set /a var= 1 "%" 1 取模运算
set /a var= 3 "<<" 2 左移位运算, 3 的二进制为11,左移2 位为 1100,换成十进制就是12,自行验证
set /a var= 4 ">>" 2 右移位运算,4 的二进制为100,右移动2 位为 1,结果为1
@echo off
set /p n=请输入2 的几次方:
set /a num=1^<^<n
echo %num%
pause