一、基本用法

FOR %variable IN (set) DOcommand [command-parameters]
%variable 指定一个单一字母可替换的参数 。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
需要注意:
①、在批处理程序中使用 FOR 命令时,使用 %%variable;在命令行中,使用%variable。
②、变量variable 可以是26个字母中的任何一个,但是区分大小写的,A 与a会被认为是不同的变量。
③、IN和DO之间的set的括号不能省略,set表示字符串或者变量的集合,其中的元素可以用空格、tab键、逗号、分号和等号等分隔。
④、set可以使用通配符,比如*.*表示所有文件,*.bat表示所有.bat文件,???.bat表示3个字符文件名的文件
⑤、for语句依次提取set中的每一个元素,把它的值赋予形式变量variable ,然后执行do后的command 命令。

@echo off
for %%V in (This is,a;for=test) do echo %%Vs
pause

执行结果:

This
is
a
for
test
请按任意键继续. . .

二、计数循环

FOR /L %variable IN (start,step,end) DO command [command-parameters]
start 初始值;step 步进值;end 终止值
需要注意:
①、step步进值不能为零
②、step步进值为正数时,start初始值不能大于end终止值
③、step步进值为负数时,start初始值不能小于end终止值

@echo off
for /L %%v in (1,2,10) do echo 第%%v次
echo.
for /L %%v in (5,-3,-5) do echo 第%%v次
pause

执行结果:

第1次
第3次
第5次
第7次
第9次第5次
第2次
第-1次
第-4次
请按任意键继续. . .

三、遍历第一层目录

FOR /D %variable IN (set) DO command [command-parameters]
需要注意:
若集合set中有通配符时,只会匹配文件夹,不会匹配文件。
若集合set中没有通配符时,FOR %variable IN (set) DO command [command-parameters]的用法是一致的。

@echo off
for /D %%d in (test) do echo %%d
echo ---分割---
for /D %%d in (test*) do echo %%d
pause

执行结果:

test
---分割---
testdir
请按任意键继续. . .

四、遍历目录树

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
遍历path及其之下的所有子目录,对这些文件夹执行command的命令。
如果省略了path,默认为当前目录。
1、列举出当前目录及其子目录

@echo off
echo 当前目录 %CD%
for /r %CD% %%d in (.) do echo %%d
pause

执行结果:

当前目录 E:\Workspace\SourceCode\bat
E:\Workspace\SourceCode\bat\.
E:\Workspace\SourceCode\bat\help\.
E:\Workspace\SourceCode\bat\testdir\.

2、列举指定目录及其子目录中的指定后缀(如.bat)的文件(以.bat结尾的文件夹不会被列出)

@echo off
for /r %%d in (*.bat) do echo %%d
pause

执行结果:

E:\Workspace\SourceCode\bat\0help.bat
E:\Workspace\SourceCode\bat\1.bat
E:\Workspace\SourceCode\bat\10for.bat
E:\Workspace\SourceCode\bat\2.bat
E:\Workspace\SourceCode\bat\3.bat
E:\Workspace\SourceCode\bat\4echo.bat
E:\Workspace\SourceCode\bat\temp.bat
E:\Workspace\SourceCode\bat\testdir\temp.bat
请按任意键继续. . .

3、列举出指定目录及其所有的子目录,对所有目录路径后添加集合中的元素,然后执行command中的命令。

@echo off
echo 当前目录 %CD%
for /r %CD% %%d in (dir1 dir2) do echo %%d
pause

执行结果:

当前目录 E:\Workspace\SourceCode\bat
E:\Workspace\SourceCode\bat\dir1
E:\Workspace\SourceCode\bat\dir2
E:\Workspace\SourceCode\bat\help\dir1
E:\Workspace\SourceCode\bat\help\dir2
E:\Workspace\SourceCode\bat\test.bat\dir1
E:\Workspace\SourceCode\bat\test.bat\dir2
E:\Workspace\SourceCode\bat\testdir\dir1
E:\Workspace\SourceCode\bat\testdir\dir2
请按任意键继续. . .

五、文本解析

FOR /F [“options”] %variable IN (file-set) DO command [command-parameters]
FOR /F [“options”] %variable IN (“string”) DO command [command-parameters]
FOR /F [“options”] %variable IN (‘command’) DO command [command-parameters]
或者,如果有 usebackq 选项:
FOR /F [“options”] %variable IN (”file-set“) DO command [command-parameters]
FOR /F [“options”] %variable IN (‘string’) DO command [command-parameters]
FOR /F [“options”] %variable IN (`command`) DO command [command-parameters]
需要注意:
①、for /F 语句是以行为单位处理文件文件的
②、options主要有以下同个关键字:eol(忽略指定字符开关的行,默认字体为分号;)、
skip(忽略指定的行数,默认为0)、
delims(以指定的符号分割行成几节,默认为空格或tab)、
tokens(指定提取行分割成的元素)、
usebackq(为了兼容文件名中所带的空格或&)
③、options每个关键字之间需要加空格

先准备一个文本:

         登黄鹤楼
昔人已乘黄鹤去,此地空余黄鹤楼。
黄鹤一去不复返,白云千载空悠悠。
晴川历历汉阳树,芳草萋萋鹦鹉洲。
日暮乡关何处是,烟波江上使人愁。twinkle,twinkle,little star,
How I wonder what you are?
Up above the world so high,
Like a diamond in the sky.:这是一个冒号号
;这是一个分号

1、使用默认值处理文本

@echo off
for /f %%r in (test.txt) do echo %%r
pause

执行结果:

登黄鹤楼
昔人已乘黄鹤去,此地空余黄鹤楼。
黄鹤一去不复返,白云千载空悠悠。
晴川历历汉阳树,芳草萋萋鹦鹉洲。
日暮乡关何处是,烟波江上使人愁。
twinkle,twinkle,little
How
Up
Like
:这是一个冒号号
请按任意键继续. . .

结果分析:每一行从非空格或tab的字符开始根据空格分割成1、2、3.。。。N节,如果没有空格,保持不变;
然后显示出第一行的第一节;处理行时会忽略分号;开关的行。
2、指定忽略以冒号开关

@echo off
for /f "eol=:" %%r in (test.txt) do echo %%r
pause

执行结果:

登黄鹤楼
昔人已乘黄鹤去,此地空余黄鹤楼。
黄鹤一去不复返,白云千载空悠悠。
晴川历历汉阳树,芳草萋萋鹦鹉洲。
日暮乡关何处是,烟波江上使人愁。
twinkle,twinkle,little
How
Up
Like
;这是一个分号
请按任意键继续. . .

3、指定以中文逗号分割每行

@echo off
for /f "eol=: delims=," %%r in (test.txt) do echo %%r
pause

执行结果:

        登黄鹤楼
昔人已乘黄鹤去
黄鹤一去不复返
晴川历历汉阳树
日暮乡关何处是
twinkle,twinkle,little star,
How I wonder what you are?
Up above the world so high,
Like a diamond in the sky.
;这是一个分号
请按任意键继续. . .

4、定点提取每行第二节元素

@echo off
for /f "eol=: delims=, tokens=2" %%r in (test.txt) do echo %%r
pause

执行结果:

此地空余黄鹤楼。
白云千载空悠悠。
芳草萋萋鹦鹉洲。
烟波江上使人愁。
请按任意键继续. . .

5、定点提取每行第1、3至5节元素
需要注意:tokens指定N节,command中需要有N个对应的变量;变量是从形式变量开始,向上递增的,如形式变量为%%r,那么其它对应的变量只能是%%s %%t %%u

@echo off
for /f "eol=: tokens=1,3-5" %%r in (test.txt) do echo %%r %%s %%t %%u
pause

执行结果:

登黄鹤楼
昔人已乘黄鹤去,此地空余黄鹤楼。
黄鹤一去不复返,白云千载空悠悠。
晴川历历汉阳树,芳草萋萋鹦鹉洲。
日暮乡关何处是,烟波江上使人愁。
twinkle,twinkle,little
How wonder what you
Up the world so
Like diamond in the
;这是一个分号
请按任意键继续. . .

6、每行根据中文逗号分割成两节

@echo off
for /f "eol=: delims=, tokens=1,*" %%r in (test.txt) do echo %%r %%s
pause

执行结果:

        登黄鹤楼
昔人已乘黄鹤去 此地空余黄鹤楼。
黄鹤一去不复返 白云千载空悠悠。
晴川历历汉阳树 芳草萋萋鹦鹉洲。
日暮乡关何处是 烟波江上使人愁。
twinkle,twinkle,little star,
How I wonder what you are?
Up above the world so high,
Like a diamond in the sky.
;这是一个分号
请按任意键继续. . .

结果分析 : 可以看到,诗中的中文逗号都不见了。这是因为每行根据中文逗号分割成两节,第二节赋给了*号。
7、以英文逗号分割成两节,跳过前6行

@echo off
for /f "delims=, skip=6 tokens=1,*" %%r in (test.txt) do echo %%r %%spaus

执行结果:

twinkle twinkle,little star,
How I wonder what you are?
Up above the world so high
Like a diamond in the sky.
;这是一个分号
请按任意键继续. . .

Windows批处理:命令for相关推荐

  1. Windows批处理命令学习

    Windows批处理命令学习一 Windows的批处理命令固然比不上unix的shell脚本强大,但用好了仍能给我们的工作带来很大作用.一个朋友问我为什么学习批处理命令,我以<程序员修炼之道-- ...

  2. Windows批处理命令快速获取文件夹下特定类型的文件名(2022.5.15)

    Windows批处理命令快速获取文件夹下特定类型的文件名 (2022.5.15) 1.需求分析 2.batch简介 3.代码实现 3.1 八种编程语言分别实现 3.1.1 C# 实现 3.1.2 C+ ...

  3. 指定路径列表批量拷贝文件+Windows批处理命令大全

    一.指定路径列表批量拷贝Windows文件 cat.bat @echo off set target = '' mkdir samples setloacal enabledelayedexpanss ...

  4. 服务器bat脚本删除空文件夹,windows批处理命令(1)——右键清理空文件夹

    日常学习工作免不了使用电脑,而作为一个强迫症,看到电脑中有空文件及其不爽: 再加上使用一些Git工具时含空文件不允许提交,因此就寻思着可不可以写一个脚本直接一键清理空文件夹. 最终实现的效果如下: 最 ...

  5. Windows批处理命令学习笔记(1)

    转自:http://blog.csdn.net/clever101 Windows的批处理命令固然比不上unix的shell脚本强大,但用好了仍能给我们的工作带来很大作用.一个朋友问我为什么学习批处理 ...

  6. windows批处理命令教程

    原文地址:http://www.cnblogs.com/phyllis/archive/2011/05/19/2051131.html 第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义: ...

  7. 【转载文章】windows批处理命令教程_____附加自己学习笔记

    https://www.jb51.net/article/41322.htm 批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd. 在命令提示下键入批处理文件 ...

  8. windows批处理命令通过修改注册表快捷开关Internet代理

    在公司上网很不爽,因为在公司要接入外网的时候需要设置一下internet代理,回到公寓以后又要把代理关掉才好,于是感觉很麻烦就萌生起了写个小脚本来开关internet代理,脚本很简单,使用window ...

  9. Windows学习总结(11)——Windows批处理命令编写代码及小程序简介

    批处理(Batch)也称为批处理脚本.顾名思义,就是对某对象进行批量的处理.DOS批处理是基于DOS命令,用来自动地批量地执行DOS命令以实现特定操作的脚本.批处理是一种简化的脚本语言,它应用于DOS ...

  10. windows批处理命令总结(超详细滴)

    总结自: https://baike.baidu.com/item/%E6%89%B9%E5%A4%84%E7%90%86/1448600?fr=aladdin 文件夹管理 cd 显示当前目录名或改变 ...

最新文章

  1. [JavaScript] 探索JS中的函数秘密
  2. Web 服务器-Apache详解
  3. python解释器哪一年_Python即Python解释器的发展史
  4. 【项目实战】vue+springboot项目使用富文本编辑器实现长文章发表和展示
  5. 腾讯财报中“最大秘密”:2018云收入91亿元,交首份TO B答卷
  6. overleaf入门
  7. 荣耀赵明评苹果发布会掉队5G:意料之中 情理之外
  8. python教程视频哪个好-Python 基础视频教程那个好?
  9. 3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇
  10. C++ 类型转换归纳
  11. C++洛谷题解(1)
  12. 关于照片(img)的水平居中和垂直居中
  13. android 添加蒙版实现护眼模式(夜间模式)
  14. 视频转mp4格式转换器如何把其他格式的视频转换成mp4格式
  15. 科目二考试的只言片语
  16. 2021-05-05 数组、 元组、字典、字符串常见操作
  17. 统计学 假设检验(Hypothesis Testing)
  18. matlab学习—分段函数计算
  19. 计蒜客T1003输出字符菱形
  20. jenkins提示没有这个文件: ‘pom.xml‘

热门文章

  1. c语言中 n的意义,\n\n在c语言中是什么意思?_后端开发
  2. 大型网站优化方案思路技巧总结
  3. php程序解压的目录在哪,PHP可以解压taz文件吗? (.tar.Z的)
  4. 那个人总有一天会爱你
  5. android手机号码恢复,安卓手机通讯录怎么恢复?教你恢复小妙招
  6. 【Mybatis】Mapper文件中sql不等于的写法
  7. C#中枚举和结构解释(少儿版)
  8. python列表元素筛选_Python如何筛选序列中的元素
  9. 【博学谷学习记录】超强总结,用心分享|人工智能第一课Python的认识与环境搭建。
  10. 电商网站怎么挑选高防服务器防御恶意攻击