首页 技术 正文
技术 2022年11月18日
0 收藏 603 点赞 4,966 浏览 1710 个字

——–siwuxie095

 
 

 
 

 
 

 
 

用 set 命令进行字符串处理(这个不应只属于 set 的内容,应该归属于格式内容,

在没有
set 的情况下,格式仍旧适用)

 
 

 
 

1、字符串替换

 
 

%PATH:str1=str2%

 
 

将字符串变量%PATH%中的 str1 替换为 str2,由于 str1 可以是整个
PATH 的值,

也可以是部分
PATH 的值,所以用此语法更多是部分替换 PATH 的值

 
 

要替换全部
PATH 的值,直接用 set PATH = string

需要说明的是,%PATH:str1=str2% 不依赖 set 而存在,

和 set 一起使用,只不过可以将替换后的内容赋值到某变量而已

 
 

如:

@echo off

set a= bbs. verybat. cn

::一开始的 a 变量里包含有三个空格符号。

echo
替换前的值: “%a%”

set var=%a: =%

::对 a 变量里的所有内容,空格都替换掉(在这里没有替换什么内容,表示删除)

echo 替换后的值: “%var%”

pause

 
 

sublime中:

 
 

set 续2

 
 

运行一览:

 
 

set 续2

 
 

 
 

 
 

 
 

 
 

2、字符串截取

 
 

%a:~[m[,n]]%

 
 

方括号表示可选,% 为变量标识符,a 为变量名,冒号用于分隔变量名

和说明部分,~ 可简单理解为”偏移”即可,m 和 n 可以取正数,也可以

取负数,表不同含义

 
 

 
 

需要说明的是,%a:~[m[,n]]% 不依赖 set 可单独使用,

如:echo %time:~0,-3%,表示显示时间的时、分、秒

(不显示毫秒),set 说到底,还是赋值功能

 
 

 
 

关于
%a:~[m[,n]]% 中 m n 取值含义:

 
 

m 正 或 0,n 正

舍弃变量 a 的前 m 位,后再取其 n 位

m 正 或 0,n 负

舍弃变量 a 的前 m 位和舍弃末尾的 n 位后剩下的值

m 正
或 0,n 缺省

舍弃变量前 m 位后,取剩下的所有值

m 负,n 正

取变量 a 的末尾 m 位,后再取前 n 位

m 负,n 负

取变量 a 的末尾 m 位,后舍弃末尾的 n 位后剩下的值

m 负,n 缺省

取变量末尾 m 位

 
 

注意:n 值可以缺省,但不可以为 0。m 值可以是任意值

 
 

 
 

假如变量
a 代表字母表的一串 26 个字母

%a:~7,3%

值为 HIJ

%a:~0,1%

值为 A

%a:~7,-3%

值为 HIJKLMNOPQRSTUVW

%a:~-7,3%

值为 TUV

%a:~-7,-3%

值为 TUVW

%a:~3%

值为 DEFGHIJKLMNOPQRSTUVWXYZ

%a:~-3%

值为 XYZ

%a:~0,-3%

值为 ABCDEFGHIJKLMNOPQRSTUVW

 
 


m
是正
或 0,表示舍弃前
m 位;n 是负,表示舍弃后 n 位

 
 

 
 

经典的实时显示时间:

@echo off

::time
取出时间值,-3
表示不显示后三位字符。这个格式只显示时间的时、分、秒。

echo
%time:~0,-3%

ping -n 2 127.1>nul&cls&%0

 
 

sublime中:

 
 

set 续2

 
 

 
 

 
 

set 用法格式总结:

set var=abc

直接给变量赋值

set /p var=请输入:

将用户输入赋值到变量

set /a var=num1+num2

数值计算 1

set /a var+=1

数值计算 2

 

 
 

一种比较怪异的写法:

@echo off

set cmdstr=echo
%var%

%cmdstr%

pause

 
 

sublime中:

 
 

set 续2

 
 

运行一览:

 
 

set 续2

 
 

 
 

 
 

注意:

set 不可以对常量进行赋值

set 不可以对参数
%0 – %9 进行计算

set 不可以对 for 循环变量
%%i 进行计算

set 对 for 的循环上下限变量进行计算不会改变循环次数

 
 

 
 

如:这三种形式的计算都是不可以的

:: 形式

:: 形式

set /a %1+=1

:: 形式

set /l %%i in (1,1,10) do
set
%%i*=3

 
 

sublime中:

set 续2

 
 

 
 

 
 

再如:

对 for 上下限进行计算看,但不会改变循环次数。也就是说,循环

次数在循环开始前就固定了,不会在循环中发生任何变化

@echo off

setlocal enabledelayedexpansion

for /l %%i in (!min!,1,!max!) do (

echo min=!min! max=!max!

)

pause

 
 

sublime中:

 
 

set 续2

 
 

 
 

 
 

 
 

 
 

 
 

【made by siwuxie095】

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289