-------siwuxie095

 
 

 
 

 
 

 
 

for
拾遗:

 
 

 
 

一:

for 语句里,do 后面一般会有括号,有括号就是复合语句,

假如需要用到括号里的变量,就需要延迟变量。于是,基本

上有 for 的地方,就需要用到延迟变量

 
 

 
 

 
 

二 :

for 语句里,不能改变循环变量
%%i 的值

 
 

如:

@echo off

setlocal enabledelayedexpansion

for /l %%i in (1,1,10) do (

set /a %%i-=2

set /a %%i=%%i+2

set /a %%i=!%%i!+2

set /a %%i=-%%i

set /a %%i=-!%%i!

set
%%i=-%%i

set
%%i=-!%%i!

)

Pause

 
 

sublime中:

 
 

 
 

运行一览:

 
 

 
 

 
 

上面一切形式对循环变量
%%i 进行运算以及

添加负号都是无效的,循环变量
%%i 值不会

有任何变化,并且会显示 "找不到操作数"

"运算符不存在"

 
 

 
 

 
 

三:

for 语句里,可以改变上下限的值,但不会影响循环次数

 
 

如:

@echo off

setlocal enabledelayedexpansion

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

echo min=!min! max=!max!

)

pause

 
 

sublime中:

 
 

 
 

运行一览:

 
 

 
 

 
 

 
 

 
 

四:

for 语句里,以 %var:~m,n% 形式截取字符,会变得掣肘!

 
 

主要原因是 for 语句里不能对循环变量
%%i 进行运算,以及在

延迟变量环境下,很难表达
%var:~m,n%

 
 

 
 

情况 1:假如 m 恒等于
%%i,而 n 总比 m 相差一个定值 P,

如何表达
%var:~m,n%
这个形式

 
 

情况 2:假如 m 或 n 需要用到
%%i 的负值,也就是 -%%i 形式,

如何表达
%var:~m,n%
这个形式

 
 

 
 

对于情况 1,第一反应就是引入一个新变量 j,对 j 值可以

进行运算,然后将 j 代入
%var:~m,n%
即可

 
 

代码如下:

@echo off

setlocal enabledelayedexpansion

set var=abcdefghijklmnopqrstuvwxyz

for /l %%i in (1,1,10) do (

set /a j=%%i-1

set tem=!var:~%%i,j!

echo !tem!

)

pause

 
 

sublime中:

 
 

 
 

 
 

上面的代码肯定不行,因为 set tem=!var:~%%i,j!
中的 j 是变量,

没有用变量符号将其表达出来。而代码用了延迟变量,则表达式改

为 set tem=!var:~%%i,%j%!
肯定不对

 
 

 
 

用感叹号如何:

set tem=!var:~%%i,!j!!

也不行,因为从计算机角度看来,感叹号括到的范围为

!var:~%%i,!

j!!,这个结果不是想要的

 
 

那么,如果先对 j 进行处理
set j=!!j!!,然后 set tem=!var:~%%i,j!,

这样也不行。也即,假如 m 值和 n 值,是有一定关系差值的动态变化

情况,就无法简单用
%var:~m,n%

 
 

这个形式表达出来,得另想办法,具体实现,

要看实际要达到什么效果

 
 

 
 

对于情况 2,由于不能对
%%i 进行取负值,但却能从一开始

循环时对循环参数取负值

 
 

如:

@echo off

setlocal enabledelayedexpansion

set var=abcdefghijklmnopqrstuvwxyz

for /l %%i in (-1,-1,-10) do (

set tem=!var:~%%i!

echo !tem!

)

Pause

 
 

sublime中:

 
 

 
 

运行一览:

 
 

 
 

 
 

上面,只需要用到 m 值 ,假如 n 值随 m 值变化而变化,

想要用
%var:~m,n%
的形式又束手无策了,得另想办法,

具体实现,要看实际要达到什么效果

 
 

 
 

一个变通的例子:输入一串字符,要求从字符串末尾

一个一个字符输出到字符串开头

@echo off

setlocal enabledelayedexpansion

set var=abcdefghijklmnopqrstuvwxyz

for /l %%i in ( -1,-1,-26 ) do (

set tem=!var:~%%i!

set tem= !tem!

set tem=!tem:~1,1!

echo !tem!

)

pause

 
 

sublime中:

 
 

 
 

运行一览:

 
 

 
 

 
 

 
 

 
 

五:

读入一个有两个数的算式,将其中的两个数赋值到字符串并回显

 
 

在输入数学表达式的时候,都是输入像 12+34,25-6 等这样的表达

式,所以实现上面的效果对编辑计算器非常有用,符合输入习惯

@echo off

setlocal enabledelayedexpansion

for /f "delims=+ tokens=1,2"
%%i in ("!num!") do (

set num1=%%i

set num2=%%j

echo num1 = !num1! num2 = !num2!

)

pause

 
 

sublime中:

 
 

 
 

运行一览:

 
 

 
 

 
 

注意:"%num%" 一定要用双引号引起来,否则计算机会显示

"找不到文件"

 
 

 
 

【made by siwuxie095】

 
 

for 续9的更多相关文章

  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. Linux:安装Ubuntu时出现“客户机操作新系统已禁用CPU,请关闭或重置虚拟机”

    安装Ubuntu时出现“客户机操作新系统已禁用CPU,请关闭或重置虚拟机“ 解决 在vmware的虚拟机的配置文件中找到xxxx.vmx的文件 用记事本打开 加入 cpuid..eax = " ...

  2. IIS经典模式与集成模式

    在IIS7.0中Web应用程序有两种配置形式:经典和集成 经典模式 经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库,原先运行于IIS6.0下的Web应用程序迁移到IIS7 ...

  3. 网站使用 rel="noopener" 打开外部锚

    当您的页面链接至使用 target="_blank" 的另一个页面时,新页面将与您的页面在同一个进程上运行. 如果新页面正在执行开销极大的 JavaScript,您的页面性能可能会 ...

  4. LTIB for ubuntu12.04

     在 ltib 目录中执行以下代码: cd <your ltib folder>./patch-ltib-ubuntu12.04.shpatch -p1 < patch-dist-u ...

  5. pidgin-lwqq

    今天第一次用pidgin登上了qq,好神奇. 从网上看到的,说是pidgin发布了支持webqq协议的lwqq,按照解释之后安装了. 感觉好神奇啊. 一个绿色的小企鹅^^ 今天有看到了一个大牛,我觉得 ...

  6. centos7上docker安装和使用教程

    Docker 是一个创建和管理 Linux 容器的开源工具.容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止.Docker 帮助系统管理员和程序员在容器中开发应用程序,并且可以扩展到成千上 ...

  7. 64位windows 2003和windows xp

    msdn windows2003 64位简体中文企业版R2 sp2(cn_win_srv_2003_r2_enterprise_x64_with_sp2_vl) ed2k://|file|cn_win ...

  8. (接上一条)解决ssh隧道断开自动重连的问题

    Sounds like you need autossh. This will monitor an ssh tunnel and restart it as needed. http://www.d ...

  9. 使用纯生js实现图片轮换

    效果图预览. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  10. vim配置之安装脚本

    vimConfig/install/install.sh git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle cp ...