自定义变量
-
【坑】创建变量时,变量名和等号之间不要有空格,否则变量名中将有空格;等号和值之间如果有空格也会带入值中。例:
:创建变量'a',值为'1' set a=1 :创建变量'a ',值为' 1' set a = 1 echo -%a%-%a %- :输出为'-1- 1-'
-
使用变量延迟从键盘读取变量
:开启变量延迟 setlocal enabledelayedexpansion set /p var=input your code : if not errorlevel 0 (echo 错误码:%errorlevel%) else (echo your input is '!var!') :输出结果 input your code : helloworld your input is 'helloworld'
-
【坑】开启变量延迟会过滤掉变量中的感叹号
setlocal enabledelayedexpansion set /p var=input your password : if not errorlevel 0 (echo 错误码:%errorlevel%) else (echo your password is '!var!') :调用子过程检查密码 if not "!var!" == "" call :checkpassword !var! exit :checkpassword set password=%1 echo checkpassword got your input %password% if not %password% == "test!!!" (echo error password!) else (echo success) goto :eof :输出结果 input your password : test!!! your password is 'test!!!' checkpassword got your input test error password :解决方案,在子过程中关闭变量延迟
-
变量嵌套
setlocal enabledelayedexpansion set a=3 set b=4 set c=6 set /p var=input your var : set substring=!var:~,%a%! echo 前%a%个字符为: %substring% set substring=!var:~%a%,%a%! echo 第%b%到%c%个字符为: %substring% :输出结果 input your var : asdfghjkl 前3个字符为: asd 第4到6个字符为: fgh
-
命令嵌套,下面的例子只是为了记录call可以执行字符串,和js中的eval类似
setlocal enabledelayedexpansion set /p src=请输入你要截取的字符串 : set /p code=请输入你要截取的起始下标,以逗号分隔 : set start=!code:~,1! set end=!code:~2,1! set /a startindex=start+1 set /a endindex=start+end echo 第%startindex%到%endindex%个字符为: call echo !src:~%start%,%end:~,1%!
网友评论