字符串处理,push pop路径,组合命令,for
字符串处理
字符串截取、命令嵌套
命令格式:%变量名:~ m,n%,其中,m表示开始位置(默认开头),n表示从m位置开始向后截取的字符个数(默认到结尾),若n为负数则表示向前截取个数,作用:将命令中的某段字符截取,通过call将字符做为命令执行。
@echo off
set str1=aaa echo ok bbb
echo 初始字符串:%str1% ::aaa echo ok bbb
echo 生成命令字符串如下:
echo %str1:~4,7% ::echo ok
echo 运行命令字符串生成最终结果为:
call %str1:~4,7% ::ok
pause
字符串内字符替换
格式:set 变量名=%变量名:n=m%其中n表示原来字符串,m表示用来替换的新字符串;都不需要用引号包裹
set a="12344567"
echo %a% ::"12344567"
set a=%a:44=kmk%
echo %a% ::"123kmk567"
pause
字符串合并
格式:set str1=%str1%%str2%
截取字符串传入截取长度
参考下面的setlocal
直接 echo %args:~%num%,-5% 没办法想要的字符串,需要如下两步
setlocal enabledelayedexpansion ::设置变量延时有效
echo !args:~%num%,-5! ::变量使用!!包括,%num%变量传入
for循环使用
常使用的,其他查看手册
语法:
1) for {%variable | %%variable} in (set) do command [command-parameters] 其中,%variable 指定一个单一字母可替换的参数。变量名称是区分大小写的,所以 %i 不同于 %I 在批处理文件中使用 FOR 命令时,指定变量建议用 %%variable而不要用 %variable。(set) 指定一个或一组文件。可以使用通配符。
2) 如果命令扩展名被启用,下列额外的 FOR 命令格式会受到支持:
a.FOR /D %variable IN (set) DO command [command-parameters]
如果集里面包含通配符,则指定与目录名匹配,而不与文件名匹配。
b.FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的FOR 语句。
如果在 /R 后没有指定目录,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
c.FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。
使用例子,
1. 如下命令行会显示当前目录下所有以bat或者txt为扩展名的文件名。
for %%c in (*.bat *.txt) do (echo %%c)
a. 如下命令行会显示当前目录下所有包含有 e 或者 i 的目录名。
for /D %%a in (*e* *i*) do echo %%a
b. 如下命令行会显示 E盘test目录 下所有以bat或者txt为扩展名的文件名。
for /R E:\test %%b in (*.txt *.bat) do echo %%b
for /r %%c in (*) do (echo %%c) :: 遍历当前目录下所有文件
c. 如下命令行将产生序列 1 2 3 4 5
for /L %%c in (1,1,5) do echo %%c
参考链接
https://blog.csdn.net/weixin_43794311/article/details/128275588