DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度

1、替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例说明其功能:
=========================================

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

=========================================

对于上面的例子有一点说明,对比两个echo aa = %aa%可以发现,如果要修改变量aa的内容的话,就需要将修改结果"%aa:中国=中华人民共和国%"赋值给变量aa。上面的字符串截取也有着同样的特点。
━━━━━━━━━━━━━━━━━━━━━━━━━━
2、截取字符串
━━━━━━━━━━━━━━━━━━━━━━━━━━
截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能:
=========================================

@echo off
set ifo=abcdefghijklmnopqrstuvwxyz0123456789
echo 原字符串(第二行为各字符的序号):
echo %ifo%
echo 123456789012345678901234567890123456
echo 截取前5个字符:
echo %ifo:~0,5%
echo 截取最后5个字符:
echo %ifo:~-5%
echo 截取第一个到倒数第6个字符:
echo %ifo:~0,-5%
echo 从第4个字符开始,截取5个字符:
echo %ifo:~3,5%
echo 从倒数第14个字符开始,截取5个字符:
echo %ifo:~-14,5%
pause

=========================================

当然,上面的例子只是将字符串处理的基本功能展示出来了,还看不出字符串处理具体有什么用处。下面这个例子是对时间进行处理。
=========================================

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

=========================================

━━━━━━━━━━━━━━━━━━━━━━━━━━
3、扩充字符串
━━━━━━━━━━━━━━━━━━━━━━━━━━
"扩充"这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理,具体功能罗列如下:
=========================================
~I – 删除任何引号("),扩充 %I
%~fI – 将 %I 扩充到一个完全合格的路径名
%~dI – 仅将 %I 扩充到一个驱动器号
%~pI – 仅将 %I 扩充到一个路径
%~nI – 仅将 %I 扩充到一个文件名
%~xI – 仅将 %I 扩充到一个文件扩展名
%~sI – 扩充的路径只含有短名
%~aI – 将 %I 扩充到文件的文件属性
%~tI – 将 %I 扩充到文件的日期/时间
%~zI – 将 %I 扩充到文件的大小
%~$PATH:I – 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩充到
空字符串
可以组合修饰符来得到多重结果:
%~dpI – 仅将 %I 扩充到一个驱动器号和路径
%~nxI – 仅将 %I 扩充到一个文件名和扩展名
%~fsI – 仅将 %I 扩充到一个带有短名的完整路径名
%~dp$PATH:i – 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个驱动器号和路径。
%~ftzaI – 将 %I 扩充到类似输出线路的 DIR
=========================================
以上内容引用于for /?帮助信息。其中的I代表变量I,不过需要说明的是,不是所有的变量都能够进行扩充的,有两个条件:1、该字符串代表一个文件路径;2、变量要用%x来表示,x可取a-z A-Z 0-9共62个字符中的任意一个。举例说明:
=========================================

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

=========================================

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

@echo off
set aa=C:\Windows\PPP\a.btx
call :deal aaa ?% "c c" ddd eee
pause>nul
exit
:deal
echo %%0 = %0
echo %%1 = %1
echo %%2 = %2
echo %%3 = %3
echo %%4 = %4
echo %%5 = %5

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

@echo off
set mystr="hello world"
set str=%mystr%
::将"号替换成空格
set "str=%str:"= %"
:next
if not "%str%"==" " (
set /a num+=1
set "str=%str:~1%"
goto next
)
echo %mystr%字符串长度为:%num%
pause

=========================================
运行结果(注意中文的引号)
"hello world"字符串长度为:12

时间: 2024-08-06 07:57:17

DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度的相关文章

C# 执行DOS命令和批处理

在项目开发中,有时候要处理一些文件,比如视频格式的转换,如果用C开发一套算法,再用C#调用,未免得不偿失!有时候调用现有的程序反而更加方便.今天就来说一下C#中如何调用外部程序,执行一些特殊任务. 这里演示调用cmd.exe,即我们常用的DOS. 下面来看代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namesp

基本DOS命令与批处理

一.DOS命令 1.1 如何操作DOS命令: win+R打开运行窗口,输入cmd,回车,打开命令行窗口 1.2基本命令 1. 命令:color f0 帮助:color ? 作用:改变背景及字体颜色 2. 命令:cls 作用:清屏 1.3目录相关命令 3. 命令:dir 作用:浏览当前文件夹的内容,(带<dir>标识的为文件夹,否则为文件) 其他用法: dir  指定路径 dir  d:\ dir  d:\文件夹 dir  /a 浏览所有内容,包括隐藏内容 4. 命令:盘符: 作用:切换分区,如

DOS命令和批处理.BAT理解

DOS命令分为两种 内部命令 内部命令就是打开cmd,一条一条运行,这就是cmd命令,输入之后,立即执行 外部命令 外部命令就是BAT文件,他将一条条cmd命令集中起来写在bat文件中,像写代码一样,最后一起运行 批处理基本编程命令 @命令 “@”符号在批处理过程中,不显示命令本身,什么意思呢,理解就是cmd命令是一条一条执行,有命令输入和输出结果 加上“@”符号  echo命令 显示指定的信息,通常显示在屏幕上另外 echo on|off用来设置在批文件执行时是否显示命令本身. “echo o

java 字符串截取 - 最后带上mysql字符串截取比较

Java中的substring()方法有两个方法的重载,一个带一个参数的,一个带两个参数的. 第一种写法: substring(n);//从索引是n的字符开始截取,条件(n>=0,n<字符串长度),第一个字符的索引是0 .n作为第一个参数,必须小于字符串长度,因为这边是从包含n下边开始截取的,所以n肯定不能等于字符串整个位数长度,而下边的m作为第二个参数才可以等于. 第二种写法: substring(n,m);//从n开始,截取m-n个字符,条件(n<m,m<=字符串长度) 通俗点

java字符串截取指定下标位置的字符串

public class A { public static void main(String[] args) { //定义的字符串 String s = "Hello World";// 通过length方法获取字符串长度 for (int i = 0;i < s.length();i++){ //charAt是获取字符串第i个字符 System.out.println(s.charAt(i)); } String a = s.replaceAll(s.substring(7,

字符串截取,中文算2个长度,不截取半个中文

/** * <pre> * 字符串辅助工具 * </pre> *  * @project baidamei * @author cevencheng <[email protected]> * @create 2012-11-30 下午2:42:56 */public class StringTool { /**  *<b>截取指定字节长度的字符串,不能返回半个汉字</b>  * 例如:  * 如果网页最多能显示17个汉字,那么 length 则

PHP:字符串转数组,数组转字符串;字符串截取、替换、查找

字符串转数组$str = 'one|two|three|four'; print_r(explode('|', $str)); //explode 以字符串分割字符串到数组 $str = 'one two three'; //str_split 以位数分割 $arr1 = str_split($str); $arr2 = str_split($str, 3); print_r($arr1); print_r($arr2); 打印如下:Array ( [0] => o [1] => n [2]

php字符串截取问题解答

用两数组存放array1("今","星期","")array2("201111月2号","三")按照"(",")"字符截取 解决方法: <?php $a = '今(201111月2号)星期(三)'; $array1 = preg_split('/(.+)/iU', $a); print_r($array1); echo '<br />'; // ww

DOS命令基础,包涵DOS库说明书

20种常用的DOS命令小结 作者: 字体:[增加 减小] 类型:转载 DOS命令总共大约有一百个(包括文本编辑.查杀病毒.配置文件.批处理等),我们这里详细介绍二十个常用的DOS命令 先介绍一下通配符的概念. 通配符*和? *表示一个字符串 ?只代表一个字符 注意通配符只能通配文件名或扩展名,不能全都表示.例如我们要查找以字母y开头的所有文件,可以输入以下命令:dir y*.*:如果要查找所有扩展名为exe的文件,可以用dir .exe.?只代表一个字符,例如我要查找第二个字母为s的所有文件,可

dos命令的小总结

DOS命令与批处理:目的:简单高效.为我们以后学习linux操作系统做准备进行DOS命令窗口: 运行---输入cmd主要包括目录操作类命令.磁盘操作类命令.文件操作类命令和其它命令 1.在d盘创建一个new文件夹2.在new中新建一个dream.txt文件(其中内容为hello)3.将new文件夹复制为new14.删除new15.将dream.txt复制到c盘下 并将原文件改名为test6.查看c盘根目录下所有的文件的详细信息并记录的到c:\1.txt中 清屏 cls任务管理器 tasklist