批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集。批处理中可实现的字符串处理功能有:截取字符串内容、替换字符串特定字段、合并字符串、扩充字符串等功能。下面对这些功能一一进行讲解。

1、截取字符串
截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能:

@echo off
Setlocal enabledelayedexpansion
::CODER BY dsw POWERD BY iBAT

set abc=hello world, this string come from bat
echo 原字符串为:%abc%
echo 截取前5个字符:%abc:~0,5%
echo 截取最后5个字符:%abc:~-5%
echo 截取第一个到倒数第6个字符:%abc:~1,-5%
echo 从第4个字符开始截取5个字符:%abc:~3,5%
echo 从倒数第14个字符开始截取5个字符:%abc:~-14,5%

echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒
pause

原字符串为:hello world, this string come from bat
截取前5个字符:hello
截取最后5个字符:m bat
截取第一个到倒数第6个字符:ello world, this string come fro
从第4个字符开始截取5个字符:lo wo
从倒数第14个字符开始截取5个字符: come
当前时间是:18:37:58.75 即 18点37分58秒75厘秒

2、替换字符串
替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例:

@echo off
Setlocal enabledelayedexpansion
::CODER BY dsw POWERD BY iBAT

set aa=伟大的中国!我为你自豪
echo 替换前:%aa%
echo 替换后:%aa:中国=中华人民共和国%
echo aa=%aa%
echo %aa%
set aa=%aa:中国=中华人民共和国%
echo aa=%aa%

pause

替换前:伟大的中国!我为你自豪
替换后:伟大的中华人民共和国!我为你自豪
aa=伟大的中国!我为你自豪

伟大的中国!我为你自豪
aa=伟大的中华人民共和国!我为你自豪

对于上面的例子有一点说明,对比两个echo aa = %aa%可以发现,其等价与:aa=%aa% echo aa=%aa%

3、字符串合并
其实,合并字符串就是将两个字符串放在一起就可以了。举例说明:

@echo off
Setlocal enabledelayedexpansion
::CODER BY dsw POWERD BY iBAT

set aa=伟大的中国!
set bb=我为你自豪
echo %aa%%bb%

echo aa=%aa%
echo bb=%bb%
set “aa=%aa%%bb%”
echo aa=%aa%
pause

伟大的中国!我为你自豪
aa=伟大的中国!
bb=我为你自豪
aa=伟大的中国!我为你自豪
复制代码
同样,如果要改变变量aa的内容的话,就需要将合并结果“%aa%%bb%”赋值给变量aa。

4、扩充字符串
“扩充”这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理,具体功能罗列如下:
~I - 删除任何引号(“),扩充 %I
%~fI - 将 %I 扩充到一个完全合格的路径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个路径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的路径只含有短名
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小
%~ P A T H : I : PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个驱动器号和路径。
%~ftzaI - 将 %I 扩充到类似输出线路的 DIR

以上内容引用于for /?帮助信息。其中的I代表变量I,不过需要说明的是,不是所有的变量都能够进行扩充的,有两个条件:1、该字符串代表一个文件路径;2、变量要用%x来表示,x可取a-z A-Z 0-9共62个字符中的任意一个。举例说明:

复制代码
@echo off
Setlocal enabledelayedexpansion
::CODER BY dsw POWERD BY iBAT

echo 正在运行的这个批处理:
echo 完全路径:%0
echo 去掉引号:%~0
echo 所在分区:%~d0
echo 所处路径:%~p0
echo 文件名:%~n0
echo 扩展名:%~x0
echo 文件属性:%~a0
echo 修改时间:%~t0
echo 文件大小:%~z0
echo %~nxtza0

pause

输出为:
正在运行的这个批处理:
完全路径:C:\Users\dsw\Desktop\test.BAT
去掉引号:C:\Users\dsw\Desktop\test.BAT
所在分区:C:
所处路径:\Users\dsw\Desktop\
文件名:test
扩展名:.BAT
文件属性:–a——
修改时间:2016/04/25 18:52
文件大小:295

–a—— 2016/04/25 19:11 99 test.BAT

复制代码
其中的%0是批处理里面的参数,代表当前运行的批处理的完全路径。类似的还有%1-%9,分别代表传递来的第1-9个参数。例子如下:

复制代码
@echo off
Setlocal enabledelayedexpansion
::CODER BY dsw POWERD BY iBAT

set aa=C:\windows\ppp\a.dsw
call:deal aaa %aaa% “c C” ddd eee
echo call func exit
pause>nul
exit

:deal
echo %%0=%0
echo %%1=%1
echo %%2=%2
echo %%3=%3
echo %%4=%4
echo %%5=%5

pause

输出为:
%0=:deal
%1=aaa
%2=C:\windows\ppp\a.dsw
%3=”c C”
%4=ddd
%5=eee

复制代码
其中,变量aa在之前是不可以扩充的,通过call命令并将aa作为参数传递给子函数:deal,将aa变量转换成了变量%1,即符合%x格式,从而可以进行字符串扩充。
至于%x中x取a-z A-Z的形式,可以复习一下for语句,for语句里面的变量就是用%x来表示的,因而可以直接进行扩充。

字符串操作结合set使用

复制代码
@echo off
Setlocal enabledelayedexpansion
::CODER BY dsw POWERD BY iBAT

set a=abcd efgh ijkl
echo 替换前的值为:”%a%”
set var=%a: =%
echo 替换后的值为:”%var%”

set b=bbs.verybat.cn
set var=%b:~1,2%
echo 截取的字符串为:%var%
set var=%a:~3%
echo 截取的字符串为:%var%
set var=%a:~0,-3%
echo 截取的字符串为:%var%

pause

替换前的值为:”abcd efgh ijkl”
替换后的值为:”abcdefghijkl”
截取的字符串为:bs
截取的字符串为:d efgh ijkl
截取的字符串为:abcd efgh i
复制代码

-表示字符串右边的意思, -3表示从字符串右边为0,向左移动3个位置

转载至:
https://www.cnblogs.com/DswCnblog/p/5432326.html

批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集。批处理中可实现的字符串处理功能有:截取字符串内容、替换字符串特定字段、合并字符串、扩充字符串等功能。下面对这些功能一一进行讲解。1、截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能: @echo off Setlocal str1= BMW_SW4.0_RC1 (这个str1是不定的,BMW也有可能是AUDI等) str2=CANoe\Flash\OEM\Files (这个路径是固定的) 需要实现的是:必须是Bat脚本, 将str2中的OEM用BMW去 替换 。即str2=CANoe\Flash\BMW\Files 需要解决的问题: 1,怎么根据 短横线(_)去提取具体OEM的名称 (bat脚本的子 字符串 的位置,以及bat脚本的 字符串 截取 ) 2,怎么将提取到的OEM的名称, 替换 掉str2的OEM (bat 脚
淘淘图片 批处理 之星是一款 操作 简单、方便实用的全功能图片 批处理 系统。包括批量格式转换、批量脚本处理、批量文件改名、批量调整尺寸、批量制作缩略图、批量压缩JPG、批量 合并 图片、批量添加背景、批量 截取 图片、批量切割图片、批量上传文件、创建PDF文件、创建多页TIF、创建电子相册等功能。本软件提供近30种图像脚本处理命令(如调整对比度、添加水印等)供您任意组合使用!还可以让您轻松的将任意多的图像文件生成一个电子相册,并提供多达150种的动画显示效果,方便您欣赏自己的图片,并轻易实现与家人、朋友分享!支持多达11种(BMP,JPG,PNG,GIF,PSD,TIF等)的基本图像格式相互转换,如果加上与他们等价的格式,则支持的图像类型超过30种。能轻易的生成缩略图,调整尺寸、转换格式、添加水印一步到位!向导式的 操作 方式,轻易上手。所有的 批处理 操作 都可以应用图像脚本处理命令,再复杂的 操作 也可以一步到位。 淘淘图片 批处理 之星能为您做什么? 批量文件改名:除了常规文件改名工具应有的功能外,她还可以只 替换 包含指定 字符串 的一部分,支持大小写转换,支持数字、大小写字母作为计数器,支持特殊字符的剔除与 替换 ,支持修改文件的属性,支持修改文件的创建时间和最后修改时间。可以轻松清除或者 替换 掉文件名中的空格或者其它特殊字符。还提供了灵活的大小写转换机制。 批量添加水印:提供图片、文本、系统水印三大水印类别。每一类别都有丰富的选项供您调配水印效果,其中包括但不限于透明度、透明颜色、阴影、排列方式、边界融合。 批量格式转换:不仅可以将一种格式转换至另一种格式,还可以对每一种格式进行细微的调整。支持的基本图像格式有:BMP,JPG,PNG,EXIF,GIF,WMF,TGA,PCX,TIFF,PPM等。写入10个常用图像基本格式。加上其兼容格式,支持的格式数量达到30个左右。 批量压缩JPG:如果您需要一个120K的JPG文件,只需输入120, 本产品就可以帮您轻松获得。本功能市场上尚无其它产品提供。 批量调整尺寸:你可以快速、高质量的将图片的尺寸调整至你需要的尺寸。不管是输出到打印机、还是用来做屏保,或得到一个QQ头像,都仅需要简单的设置就可以了。 仅需简单的设置,就可以轻松的交换图像的宽度与高度;图像的宽度和高度可以分开设置,且可以指定只增加或减小尺寸。 创建电子相册:用来将图片文件编译到一个EXE文件中,并且可以通过执行该EXE文件查看其中的图片。选择您需要的文件,启动该功能向导,一个电子相册就诞生了。多达150种超酷的动态图片显示效果,定能让您流连忘返。 创建PDF文件: 您可以为单个文件生成单独的PDF文件,也可以将多张图片放入一个PDF中。PDF文件具有防复制、防篡改的功能。而且图像表现能力也非常的好。现在很多国际际间的合同、合作文件都通过PDF来传递、保存。是传递、保存珍贵图像资料 或扫描电子书籍的好选择。 批量制作缩略图:您可以方便的将大量的图片制作成便于网络上使用的缩略图。尺寸调整、格式转换、添加水印一气呵成。需要缩略图吗,让她代您完成吧。 批量上传图片:图片处理好了,要传到网上吗?使用该功能吧。只需选择文件,选择该命令,按向导的提示填入FTP帐号信息。 批量 合并 图片:将多张图片合成一张图片。不是简单的拼接,诸多选项可以让您轻松完成许多高难度的任务。 批量添加背景:将您的图片放到一个大图片上。 批量 截取 图片:从您的图片中 截取 出一个小图片。 批量切割图片:把您的图片分成许多小图片。每一小图片都是一个单独的文件。 批量脚本处理:本产品还提供了20多个脚本命令,来完成一些常用的图像处理 操作 。包括但不限于:图片水印、文字水印、系统水印、灰度化、二值化、自动色阶、伽玛校正、高斯模糊、锐化。更加强大的是,您可以设定只有符合某些条件的时,才执行特定的脚本。 调整图像分辨率(DPI):图像分辨率即图像中每单位打印长度显示的像素数目,通常用每英寸点数(DPI)表示,使用此软件您可以轻松地修改图片的分辨率,以使打印机打出最好质量的图片。 添加图片的标题(描述):您只需事先给每张图片命好文件名,就可以轻松的把每张图片的文件名批量添加到对应图片的任意位置作为该图片的标题(描述)。 淘淘图片 批处理 之星与其它类似的软件有什么不同? 淘淘图片 批处理 之星是一个整体解决方案,它将诸多单一的功能有机的整合在一起,让您的工作变得轻松。她能自动完成许多繁锁的工作,从而让您有更多的时间和精力专注于业务的发展。 淘淘图片 批处理 之星有哪些特色? 高集成度:集文件管理、处理、合成、切割、传输于一体。是一个真正的图片全能 批处理 软件。 简单易用:所有
rem delims为 字符串 eol=# 忽略以#开头的行 tokens=1-10* 从第1组到10* rem 括号里填写你要 替换 的文件 (for /f "delims=" %%a in (a.txt) do ( rem 将一个值赋给一个变量 set "str=%%a" setlocal enabledelayedexpansion rem 旧 字符串 =新 字符串 set "str=!str:wwww2=1111!" set "str=!str 项目中使用一些字体是通过外网请求获取的(项目规定不允许跨域请求),这部分代码在node_modules依赖中,且无法通过样式覆盖解决。因此需要在编译好的代码中进行群 替换 。 2、解决方案 1)使用bat进行编译管理新建run_script.bat @echo off REM 声明采用UTF-8编码 chcp 65001 REM 当前目录 执行编译命令 %1%接收的第一个参数 数组只是相同类型的、用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。……所有数组(无论他们的元素是对象还是基本类型)都有一个固定成员,可以通过它获知数组内包含了多少元素,但不能对其修改。这个只读成员就是length。 参考文献:《Thinking in Jav... 字符串 查找 bat 批处理 代码 相应的运行结果通常情况下,任何一种语言对于 字符串 操作 都是重中之重。这里稍微介绍下bat 批处理 中对于 字符串 操作 。对于 字符串 截取 set testStr=abcdefghijklmnopqrstuvwxyz0123456789 echo 原始 字符串 %testStr% echo 提取前五个 字符串 :%testStr:~0,5%
一: 字符串 截取 python的 字符串 是有序集合,我们可以通过索引来提取想要获取的字符,可以把python的 字符串 也做为 字符串 的列表就更好理解 python的字串列表有2种取值顺序: 第一种是从左到右索引默认0开始的,最大范围是 字符串 长度少1 s = 'ilovepython' s[0]的结果是i 第二种是从右到左索引默认-1开始的,最大范围是 字符串 开头 s = 'il...
读入 字符串 和两个字符,遍历 字符串 ,如果当前字符是第一个字符,就 替换 成第二个字符,否则不变。 注意: 字符串 是不可变的,所以需要新建一个 字符串 来存储 替换 后的结果。 C++ 代码 #include <iostream> #include <string> using namespace std; int main() { string s; getline(cin, s); // 读入 字符串 char a, b; cin >> a >> b; // 读入两个字符 string ans = ""; // 存储 替换 后的结果 for (int i = 0; i < s.size(); i++) { if (s[i] == a) ans += b; // 如果当前字符是第一个字符,就 替换 成第二个字符 else ans += s[i]; // 否则不变 cout << ans << endl; // 输出结果 return 0;