--------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中:

 
 

 
 

运行一览:

 
 

 
 

 
 

 
 

 
 

 
 

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 用法格式总结:

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 不可以对常量进行赋值

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

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

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

 
 

 
 

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

:: 形式

:: 形式

set /a %1+=1

:: 形式

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

 
 

sublime中:

 
 

 
 

 
 

再如:

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

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

@echo off

setlocal enabledelayedexpansion

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

echo min=!min! max=!max!

)

pause

 
 

sublime中:

 
 

 
 

 
 

 
 

 
 

 
 

 
 

【made by siwuxie095】

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

 
 

set 续2的更多相关文章

  1. .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入

    上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...

  2. [.NET] C# 知识回顾 - 委托 delegate (续)

    C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...

  3. iOS 开发者账号到期续费流程

    1.登录developer.apple.com,查看到期时间 2.到期提醒通知,点击Renew Membership续费(一般提前一个月提醒续费) 3.个人开发者账号续费需要支付 688人民币/年(9 ...

  4. 微信公众号开发系列教程一(调试环境部署续:vs远程调试)

    http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...

  5. CI-持续集成(1)-软件工业“流水线”概述

    CI-持续集成(1)-软件工业“流水线”概述 1   概述 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次, ...

  6. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  7. [译]Godot系列教程三 - 场景实例化(续)

    场景实例化(续) 要点 场景实例化带来很多便利的用法,总体来说有: 将场景细分,更便于管理 相对于某些引擎中的Prefab组件更灵活,并且在许多方面更强大 是一种设计更复杂的游戏流程甚至UI的方式 这 ...

  8. 【小白的CFD之旅】13 敲门实例【续3】

    接上文[小白的CFD之旅]12 敲门实例[续2] 4 Results4.1 计算监测图形4.2 Graphics4.2.1 壁面温度分布4.2.2 创建截面4.2.3 显示截面物理量4.2.4 Pat ...

  9. 【小白的CFD之旅】12 敲门实例【续2】

    接上文[小白的CFD之旅]敲门实例[续] 主要内容 3 Solution3.1 Solution Methods3.2 Solution Controls3.3 Monitors3.4 Report ...

  10. jquery实现简单瀑布流布局(续):图片懒加载

    # jquery实现简单瀑布流布局(续):图片懒加载 这篇文章是jquery实现简单瀑布流布局思想的小小扩展.代码基于前作的代码继续完善. 图片懒加载就是符合某些条件时才触发图片的加载.最常见的具体表 ...

随机推荐

  1. jinja 2 filter 使用

    文档地址 http://jinja.pocoo.org/docs/templates/#builtin-filters indent indent(s, width=4, indentfirst=Fa ...

  2. 利用xpath来解析douban电影相对应的信息

    from lxml import etree import requests url = "https://movie.douban.com/chart" headers = {& ...

  3. 数据库数据——>文件xml

    xml文件格式 <smss> <sms> <data> </data> </sms> </smss> 这里面的意思是将数据库里面 ...

  4. jenkins配置java

    # JDK版本 java -version # JDK目录 echo $JAVA_HOME # jenkins配置

  5. ACCESS_TOKEN与FRESH_TOKEN

    OAuth1.0中的access_token过期时间通常很长,安全性差.于是OAuth2.0推出了refresh_token. OAuth2.0中,客户端用账户名,密码经过一定方式(比如先请求code ...

  6. redhat 防火墙禁止允许的IP链接指定的端口

    编辑:iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.4.3 --dport 80 -j A ...

  7. linux中查看nginx、apache、php、mysql配置文件路径的方法

    如何在Linux中查看nginx.apache.PHP.MySQL配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档.这时该怎么判断找到正确的加载文件路径了.可以通过以下来判断1.判断a ...

  8. 如何查看oracle表空间是否自动扩展

    select file_name,autoextensible,increment_by from dba_data_files

  9. Tomcat服务器学习和使用(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

  10. Mysql中用between...and...查询日期时注意事项

    select count(1) from user where regist_date between '2017-07-25 00:00:00' and  '2017-07-25 24:00:00' ...