1. 字符串定义使用set来定义字符串@echo off set string1=Hello echo %string1%代码说明:将字符串Hello赋值给string1的变量2. 字符串拼接使用&a
使用set来定义字符串
@echo off set string1=Hello echo %string1%
代码说明:
将字符串Hello赋值给string1的变量
使用 %string1%%string2% 的方式完成字符串的拼接。
@echo off set string1=Hello set string2=World set combined1=%string1% %string2% set combined2=%string1%,%string2% set combined3=%string1%%string2% set combined4=aaa%string1%bbb%string2%ccc set "combined5=%string1%^&%string2%" echo %combined1% echo %combined2% echo %combined3% echo %combined4% echo %combined5%
代码说明:
用来连接字符串的字符串,如果包含了特殊字符则需要使用^转义,并且需要使用""括起来,特殊字符包括(但不限于):
符号 | 作用 |
---|---|
@ | 命令行回显屏蔽符 |
% | 批处理变量引导符 |
> | 重定向符 |
>> | 重定向符 |
<、>&、<& | 重定向符 |
| | 命令管道符 |
^ | 转义字符 |
& | 组合命令 |
&& | 组合命令 |
|| | 组合命令 |
"" | 字符串界定符 |
一个字符串 My-String,并且你想要将其分割为 My 和 String。
@echo off set my_string=My-String for /f "tokens=1,2 delims=-" %%a in ("%my_string%") do ( set first_part=%%a set second_part=%%b ) echo First part: %first_part% echo Second part: %second_part%
代码说明:
定义了一个名为 my_string 的变量,其值为 My-String
它使用 for /f 命令来分割这个字符串。tokens=1,2 指定了分割后的部分(tokens),delims=-指定了分隔符(delimiters)
分割后的部分被赋值给 %%a和 %%b,然后被存储在 first_part 和 second_part 变量中
上述例子中delims=-指定的是字符集作为分割符,比如:delims=+-$# 表示字符串分割时是按+ - & #分别进行分割。
有时候可能需要一个字符串来作为分割符,可以通过如下方式实现:
@echo off set cmd_str=REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v "Common Desktop" for /F "skip=2 tokens=*" %%S in ('%cmd_str%') do set str=%%S ::set "str=Common Desktop REG_EXPAND_SZ %%PUBLIC%%\Desktop" :: 利用字符串替换功能,将 REG_EXPAND_SZ 替换为#,注意这里两端各有4个空格 set str=%str: REG_EXPAND_SZ =#% :: 然后再利用for /f函数,delims=# 来分割字符串 for /F "tokens=1,2 delims=#" %%a in ("%str%") do ( set value_name=%%a set value=%%b ) echo value_name="%value_name%" echo value="%value%"
代码说明:
利用字符串替换功能,将多个字符 REG_EXPAND_SZ 替换为单个字符#,注意这里两端各有4个空格;
:然后再利用for /f方法,delims=#来分割字符串,从而达到曲线救国的目的
语法:%var:old_str=new_str%说明:使用str2来替换var变量中str1的一部分内容
@echo off set VAR=hello set VAR=%VAR:ell=ipp% echo %VAR%
代码说明:
创建了一个变量VAR,它的值是“hello”。然后,使用“ell” 替换为 “ipp”。因此,脚本将输出 “hippo”。
语法:目标字符串=%源字符串:~起始位置,截取长度%说明:start_index 是子串的开始位置,length 是子串的长度。索引是从0开始的,所以0表示字符串的第一个字符。
@echo off echo %%date%%=%date% echo %%date:~0,4%%=%date:~0,4% echo %%date:~5,2%%=%date:~5,2% echo %%date:~8,2%%=%date:~8,2% echo %%date:~-2%%=%date:~-2% echo %%date:~0,-2%%=%date:~0,-2% echo %%date:~-8,3%%=%date:~-8,3% echo %%date:~-8,-3%%=%date:~-8,-3% echo %%date:~4%%=%date:~4% echo %%date:~,4%%=%date:~,4% echo %%date:~4,%%=%date:~4,%
输出:
%date%=2023/07/11 周二 %date:~0,4%=2023 %date:~5,2%=07 %date:~8,2%=11 %date:~-2%=周二 %date:~0,-2%=2023/07/11 %date:~-8,3%=07/ %date:~-8,-3%=07/11 %date:~4%=/07/11 周二 %date:~,4%=2023 %date:~4,%=
代码说明:
起始位置:
1)起始值为 正,表示正着数,如:%date:~5,2%,表示从正着数第5个字符,往后截取2个字符(不含第5个字符);
2)起始值为 负,表示倒着数,如:%date:~-8,3%,表示从倒着数第8个字符,往后截取3个字符(含第8个字符);
3)起始值为0或空,表示从最左边开始,如:%date:~,4%,%date:~0,4% 都表示从左边起始位置,截取2个字符;
(起始位置如果省略,必需有个逗号占位,如果逗号省略则表示【截止长度为空】)
截止长度(偏移量):
1)截止长度为 正,表示截取长度,如:%date:~8,2%,表示从正着数第8个字符,往后截取2个字符(不含第8个字符);
2)截止长度为 负,表示结束位置,如:%date:~-8,-3%,表示从倒着数第8个字符,往后截取,一直截取到倒数第3个字符的位置(含倒数第8个字符,不含倒数第3个字符);
3)截止长度为 空,表示截取到结尾位置,如:%date:~4%,表示从正着数第4个字符,往后截取所有字符(不含第4个字符);
(截止长度如果省略,不能有逗号占位,否则取值为空)
使用echo和findstr命令来判断是否包含一个字符串
@echo off set VAR=hello echo %VAR% | findstr /C:"ell" >nul if errorlevel 1 ( echo String not found ) else ( echo String found )
代码说明:
创建了一个变量 VAR,它的值是 “hello”。然后,使用 echo 和 findstr 命令来查找 “ell”。如果 “ell” 被找到,脚本将输出 “String found”,否则,输出 “String not found”
暂无管理员
粉丝
0
关注
0
收藏
0