批处理for 的理解及例子
前言
首先for的代码形式是:
for %i in (set) do command
这里面有一些小知识知识点;
比如说i是变量,那么i可以换成其他字符吗?答案是可以的。但是必须是26个字母中的其中一个。
其中批处理是区分大小写的。
for %i in (set) 与for %I in (set) 是不同的。
其中(set) 是一个集合,每个元素之间,可以用空格、跳格、逗号、分号或等号分隔;
然后一个极为关键的地方在于:
在cmd窗口中:for %I in (command1) do command2
在批处理文件中:for %%I in (command1) do command2
因为我们是开发人员,为了方便,还是选择第二种匹处理形式。
下面介绍for的一些用法和给与一个例子做练习。
for /L
FOR /L %%i IN (1, 1, 10) DO (
echo %%i
)

那么它会循环。
命令格式为:
FOR /L %%i IN (start, step, end) DO (
)
解释这个L是loop的意思。
for /F
FOR /F "tokens=1* delims=," %%a IN (a.txt) DO (
echo %%a %%b
)
a.txt
good,notgood
do,notdo
delim 是通过什么格式来切割行。
比如说good,notgood,这里是通过,进行切割。
tokens 是切割取那些元素,比如1-5,那么就是取1到5,这里的1*取1和后面全部作为一个整体,不再进行分割。
来看下结果:

来看其他两个参数:
FOR /F "eol=d tokens=1* delims=," %%a IN (a.txt) DO (
echo %%a %%b
)
eol 是过滤那些行,我这里过滤d开头的行。

这样就ok了。
FOR /F "skip=1 tokens=1* delims=," %%a IN (a.txt) DO (
echo %%a %%b
)
skip 是跳过几行,我这里是跳过第一行就不贴了。
下面是/f 的命令格式。
FOR /F "eol=end_of_line, skip=num_of_lines, delims=delimiter, tokens=tokens " %%i IN (set) DO (
)
注:
delims默认值是空格和跳格键,tokens 默认值是1,eol是:
for /d
@echo off
for /d %%i in (c:/*) do echo %%i
pause
查询c目录所有目录,不包括子目录。
for /r
FOR /R c:/ %%i IN (*.exe) DO (
echo %%i
)
查询c目录下所有的exe 文件,你懂得,挖地形式的寻找全部。
例子
A1:假设令 set str=I love,bbs;bathome=net,请分别显示出I、love、bbs、bathome和net这五个字符串。目的:了解for语句用到了哪些符号作为元素的分隔符。
A2:条件同A1,要求最后只显示net这个字符串。目的:了解for语句的执行流程。
A1:
@echo off
set str="I love,bbs;bathome=net"
FOR /f "tokens=1-5 delims=,;= " %%a IN (%str%) DO (
echo %%a %%b
)
pushd
A2:
@echo off
set str="I love,bbs;bathome=net"
FOR /f "tokens=1,* delims==" %%a IN (%str%) DO (
echo %%b
)
pushd
别人给出的答案,不用for
A1:
[Code]
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do echo %%i
pause>nul
[Result]
I
love
bbs
bathome.net
[Discussion]
说明for语句将“空格、逗号、分号、等号”视作元素分隔符
A2:
[Code]
@echo off
set str=I love,bbs;bathome.net
for %%i in (%str%) do (set a=%%i)
echo %a%
pause>nul
显示输出最后一个。
[Result]
bathome.net
上面是有问题的,不会用.进行切割。
答案后续补齐,有点事出去一下。
批处理for 的理解及例子的更多相关文章
- AngularJS transclude 理解及例子
一.概念理解 transclude可以在指令中让使用者自定义模板,也就是说,指令中模板的一部分,让指令的使用者动态指定:与指定中的Scope属性值为{}时候的作用类似,scope属性让指令使用者动态制 ...
- Java ClassLoader加载机制理解 实际例子
针对 Java ClassLoader加载机制理解, 做了个如何自定制简单的ClassLoader,并成功加载指定的类. 不废话,直接上代码. package com.chq.study.cl; im ...
- 关于SendMessage和PostMessage的理解的例子
对于SendMessage 和 PostMessage 平时口头的解释是 SendMessage 发送消息后等待返回, PostMessage 发送消息后立即返回 . 但是这样解释还是不具体,什么叫等 ...
- Java多线程学习——死锁的一个容易理解的例子
发生死锁的情况:多个线程需要同时占用多个共享资源而发生需要互相死循环等待的情况 public class Mirror { //镜子 } public class Lipstick { //口红 } ...
- [20171225]变态的windows批处理4.txt
[20171225]变态的windows批处理4.txt --//昨天学习windows 批处理的echo &.使用它可以实现类似回车换行的功能.例子: 1.echo &.R:\> ...
- MapReduce与批处理------《Designing Data-Intensive Applications》读书笔记14
之前的文章大量的内容在和大家探讨分布式存储,接下来的章节进入了分布式计算领域.坦白说,个人之前专业的重心侧重于存储,对许多计算的内容理解可能不是和确切,如果文章中的理解有所不妥,愿虚心赐教.本篇将和大 ...
- [No0000A7]批处理经常用到的变量及批处理>NUL详细介绍
绝对路径是指调用绝对的程序位置的路径,例如: start C:\Windows\test.exe 相对路径是文件改变路径以后还会按照变量的路径所在位置去调用,例如: start %WINDIR%\te ...
- OpenStack中Keystone的基本概念理解
原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...
- 【CSS3】 理解CSS3 transform中的Matrix(矩阵)
理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...
- 理解CSS3 transform中的Matrix(矩阵)
一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...
随机推荐
- Redis 常见数据类型(对象类型)和应用案列
前言: 每次你在游戏中看到玩家排行榜,或者在音乐应用中浏览热门歌单,有没有想过这个排行榜是如何做到实时更新的?当然,依靠 Redis 即可做到. 在技术领域,我们经常听到「键值存储」 这个词.但在 R ...
- sqlserver 查看执行计划
-- 清除执行计划缓存 DBCC FREEPROCCACHE -- 查看缓存执行计划 SELECT * FROM sys.dm_exec_cached_plans as p CROSS APPLY s ...
- iview Input 必填不能未空 不能输入空格 v-model.trim required: true
iview Input 必填不能未空 不能输入空格 v-model.trim required: true 需求 测试在验证必填的时候,会输入一个空格,本着空格不算内容的原则,会提一个bug 解决方案 ...
- HDU 2056:Rectangles(两个矩形交点的性质)
一.原题链接 Problem - 2056 (hdu.edu.cn) 二.题面 Given two rectangles and the coordinates of two points on th ...
- IDEA或Android Studio用书签功能标识代码
原文地址:IDEA或Android Studio用书签功能标识代码 | Stars-One的杂货小窝 在之前的维护工作中,有时候翻源码的时候,找到了一个文件的某行关键,之后一层层进去之后,又突然不记得 ...
- 一张图搞清楚wait、sleep、join、yield四者区别,面试官直接被征服!
写在开头 在线程的生命周期中,不同状态之间切换时,可以通过调用sleep().wait().join().yield()等方法进行线程状态控制,针对这一部分知识点,面试官们也会做做文章,比如问你这些方 ...
- FFmpeg命令行之ffplay
一.简述 ffplay是以FFmpeg框架为基础,外加渲染音视频的库libSDL构建的媒体文件播放器. 二.命令格式 在安装了在命令行中输入如下格式的命令: ffplay [选项] ['输入文件'] ...
- HiSi 3516CV500 NNIE(Neural Network Inference Engine) 摸鱼记录(2) --- 模型生成及模型仿真(实例分析)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- C# 12 拦截器 Interceptors
拦截器Interceptors是一种可以在编译时以声明方式替换原有应用的方法. 这种替换是通过让Interceptors声明它拦截的调用的源位置来实现的. 您可以使用拦截器作为源生成器的一部分进行修改 ...
- 记录--三分钟打造自己专属的uni-app工具箱
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 介绍 可曾想过我们每次创建新项目,或者换地方写程序,都要把之前写过的工具类找出来又要复制粘贴一遍有些麻烦,尤其是写uni-app自定义模板 ...