for命令详解(一)【共十篇】

for命令详解(二)【共十篇】

for命令详解(三)【共十篇】

for命令详解(四)【共十篇】

for命令详解(五)【共十篇】

for命令详解(六)【共十篇】

for命令详解(七)【共十篇】

for命令详解(八)【共十篇】

for命令详解(九)【共十篇】

for命令详解(十)【共十篇】

【格式六】  

【file-set】

顾名思义,file-set 是个文件集合,如果file-set 中存在某个目录名,对应该目录,则提示“系统找不到”

示例

:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】
::demo.bat
@echo  off
:: ziDir 是当前目录下的一个目录
for /f "" %%a in (ziDir) do (
echo a:  begin-%%a-end
)

【标注一】   下载Notepad++

运行

C:\out>dir /b /a:d|findstr "ziDir$"
ziDirC:\out>demo
系统找不到文件 ziDir。
C:\out>

1、file-set 中的文件名不支持通配符

示例

::demo.bat
@echo  off
for /f "tokens=1-2 delims= "  %%a  in (te?t.txt) do (
echo a:  x%%ay
echo b:  x%%by
)

运行

C:\out>where /r .  text.txt
C:\out\text.txtC:\out>demo
系统找不到文件 te?t.txt。
C:\out>

2、file-set 是一个文件名列表,各个文件名之间使用空白分隔,每个文件名必须存在,不然,当循环至不存在的文件时,for命令会报错并退出

示例

::demo.bat
@echo  off
for /f "tokens=1-2 delims= "  %%a  in (a.txt b.txt) do (
echo a:  x%%ay
echo b:  x%%by
)

运行

C:\out>type a.txt
11 22
C:\out>type b.txt
系统找不到指定的文件。C:\out>demo
a:  x11y
b:  x22y
系统找不到文件 b.txt。
C:\out>

3、file-set 中的文件名可以相对路径名,也可以是绝对路径名

示例

::demo.bat
@echo  off
for /f "tokens=1-2 delims= "  %%a  in (a.txt c:\b.txt) do (
echo a:  x%%ay
echo b:  x%%by
echo ---------------------------
)

运行

C:\out>type c:\b.txt
xx yy zzC:\out>type a.txt
11 22
C:\out>demo
a:  x11y
b:  x22y
---------------------------
a:  xxxy
b:  xyyy
---------------------------
C:\out>

4、file-set 中的文件可以隐藏文件

示例

:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】
::demo.bat
@echo  off
:: test.txt 是隐藏文件
for /f "tokens=1-3" %%a in (test.txt) do (
echo a:  begin-%%a-end
echo b:  begin-%%b-end
echo c:  begin-%%c-end
echo ----------------------------------------------
)

运行

C:\out>dir /b /a:h test.txt
test.txtC:\out>type test.txt
one two three
;x y z
100 200 300C:\out>demo
a:  begin-one-end
b:  begin-two-end
c:  begin-three-end
----------------------------------------------
a:  begin-100-end
b:  begin-200-end
c:  begin-300-end
----------------------------------------------C:\out>

5、file-set 中的每文件名支持转义字符(^)

示例

::demo.bat
@echo  off
for /f "tokens=1-2 delims= "  %%a  in (a.^txt) do (
echo a:  x%%ay
echo b:  x%%by
)

运行

C:\out>type a.txt
11 22
C:\out>demo
a:  x11y
b:  x22y
C:\out>

6、file-set 使用的分隔符总是空白(一个或多个空格),不受 delims=xxx 的影响

        示例

::demo.bat
@echo  off
for /f "tokens=1-2 delims=,"  %%a  in (a.txt text.txt) do (
echo a:  x%%ay
echo b:  x%%by
echo -------------------------------------------------------
)

运行

C:\out>type a.txt
11 22
C:\out>type text.txt
one two
C:\out>demo
a:  x11 22y
b:  xy
-------------------------------------------------------
a:  xone twoy
b:  xy
-------------------------------------------------------
C:\out>

7、file-set 开头和末尾的空白(一个或多个空格)会被忽略

示例

::demo.bat
@echo  off
for /f "tokens=1-2 delims= "  %%a  in (   a.txt text.txt  ) do (
echo a:  x%%ay
echo b:  x%%by
echo -------------------------------------------------------
)

运行

C:\out>type text.txt
one two
C:\out>type a.txt
11 22
C:\out>demo
a:  x11y
b:  x22y
-------------------------------------------------------
a:  xoney
b:  xtwoy
-------------------------------------------------------
C:\out>

8、使用 file-set 时,如果被取的列中包含连续的多个空格,则这些空格会被原样输出,它们不会被合并为一个空格或被删除。

示例

::demo.bat
@echo  off
for /f "tokens=1-2 delims=w"  %%a  in (text.txt) do (
echo a:  x%%ay
echo b:  x%%by
echo -------------------------------------------------------
)

运行

C:\out>type text.txtone     two
C:\out>demo
a:  x       one     ty
b:  xo      y
-------------------------------------------------------
C:\out>

string

1、string 是一个字符串列表(string 被for命令看作“一行”,所有只循环一次),多个字符串之间使用的分隔符由 delims=xxx 指定,多个连续的分隔符会被当作一个分隔符, string 开头和末尾的 xxx 会被忽略

示例

::demo.bat
@echo  off
set /a num=0
for /f "tokens=1-3 delims=b" %%a in ("bbbbbbbbbbbbone   two    bbbbbbthreebbbbbbbbbbbbbbbbbbb") do (
set /a num+=1
echo %%a
echo %%b
echo %%c
)
echo %num%

运行 

C:\out>demo
one   two
three
ECHO 处于关闭状态。
1
C:\out>

2、string 不支持转义字符(^)

示例

::demo.bat
@echo  off
set /a num=0
for /f "tokens=1-3 delims= " %%a in ("one   t^wo") do (
set /a num+=1
echo %%a
echo %%b
echo %%c
)
echo %num%

运行

C:\out>demo
one
t^wo
ECHO 处于关闭状态。
1
C:\out>

3、使用 string 时,如果被取的列中包含连续的多个空格,则这些空格会被原样输出,它们不会被合并为一个空格或被删除。

示例

::demo.bat
@echo  off
set /a num=0
for /f "tokens=1-3 delims=w" %%a in ("   one    two       ") do (
set /a num+=1
echo a:  x%%ay
echo b:  x%%by
echo b:  x%%cy
)
echo %num%

运行

C:\out>demo
a:  x   one    ty
b:  xo       y
b:  xy
1
C:\out>

command

1、使用 command 时,把执行 command 的输出内容看作一个文件,对该文件的每一行进行循环,行内分隔符由 delims=xxx 指定,多个连续的分隔符会被当作一个分隔符, 每行开头和末尾的 xxx 会被忽略

示例

::demo.bat
@echo  off
set /a num=0
for /f "tokens=1-3 delims=w" %%a in ('echo wwwwwonewwwwtwowwwwww') do (
set /a num+=1
echo a:  x%%ay
echo b:  x%%by
echo b:  x%%cy
)
echo %num%

运行

C:\out>demo
a:  xoney
b:  xty
b:  xoy
1
C:\out>

2、使用 command 时,如果被取的列中包含连续的多个空格,有的 command(例如:echo)会导致连续空格被合并或被删除,有的 command(例如:type)则会原样输出连续空格,解决之道:使用转义字符(^)转义空格

示例

::demo.bat
@echo  off
set /a num=0
for /f "tokens=1-3 delims=w" %%a in ('echo    one    two       ') do (
set /a num+=1
echo a:  x%%ay
echo b:  x%%by
echo b:  x%%cy
)
echo %num%set /a num=0
for /f "tokens=1-3 delims=w" %%a in ('echo ^ ^ ^ one^ ^ ^ ^ two^ ^ ^ ^ ^ ^ ^ ') do (
set /a num+=1
echo a:  x%%ay
echo b:  x%%by
echo b:  x%%cy
)
echo %num%

 运行

C:\out>demo
a:  three
b:
c:  %c
C:\out>demo
a:  xone ty    // “   one    t” 开头的连续空格被删除,中间的连续空格被合并为一个空格
b:  xo y
b:  xy
1
a:  x   one    ty
b:  xo       y
b:  xy
1
C:\out>

3、和在DOS命令行下执行 command 一样,command 支持通配符。

示例

::demo.bat
@echo  off
set /a num=0
for /f "tokens=1-3 delims=w" %%a in ('type d.t?t') do (
set /a num+=1
echo a:  x%%ay
echo b:  x%%by
echo b:  x%%cy
)
echo %num%

运行

C:\out>type d.txtone    two
C:\out>demod.txta:  x   one    ty
b:  xo       y
b:  xy
1
C:\out>

4、command 支持转义字符(^)

示例

::demo.bat
@echo  offfor /f "tokens=1-2 delims= "  %%a  in ('echo  thr^ee') do (
echo a:  %%a
echo b:  %%b
echo c:  %%c
)

运行

C:\out>demo
a:  three
b:
c:  %c
C:\out>

5、命令分隔符(||、&&、&)和管道(|)用于 command 时,必须对其转义,不然会报错

示例

::demo.bat
@echo  off
for /f "tokens=1 delims=" %%a in ('type test.txt^|findstr one') do (
echo a:  x%%ay
)
echo -----------------------------------------------------------------------
for /f "tokens=1 delims=" %%a in ('echo=one^&^& echo two') do (
echo a:  x%%ay
)
echo -----------------------------------------------------------------------
for /f "tokens=1 delims=" %%a in ('findstr xyz test.txt^|^| echo two') do (
echo a:  x%%ay
)
echo -----------------------------------------------------------------------
for /f "tokens=1 delims=" %%a in ('echo one^& echo two') do (
echo a:  x%%ay
)

运行

C:\out>type test.txt
oneC:\out>demo
a:  xoney
-----------------------------------------------------------------------
a:  xoney
a:  xtwoy
-----------------------------------------------------------------------
a:  xtwoy
-----------------------------------------------------------------------
a:  xoney
a:  xtwoyC:\out>

写作不易,本文档如能帮到您,麻烦您 “在下面一圈三连”

【WINDOWS / DOS 批处理】for命令详解(八)相关推荐

  1. 终极dos批处理循环命令详解

    ---恢复内容开始--- 终极dos批处理循环命令详解 格式:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令 ...

  2. DOS循环:bat/批处理for命令详解之一 (史上虽详尽的总结和说明~~)

    DOS循环:bat/批处理for命令详解之一 (史上虽详尽的总结和说明~~) --- --- 前言: 虽然以前对批处理也算有点研究,但一直对for命令理解不够透彻,偶尔用时也是照猫画虎的用一下. 虽然 ...

  3. 批处理for命令详解(转) 批处理for命令详解

    批处理for命令详解(转) 批处理for命令详解 2008-03-07 11:00 FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直 ...

  4. 批处理if 命令详解

    批处理(bat)if 命令详解 一.语法规则 1.if命令5钟用法 if "字符串1"=="字符串2" command 语句 #判断两个字符串是否相等 if 数 ...

  5. windows/NBTSTAT,linux/nmblookup命令详解,查询NetBIOS名

    NBTSTAT命令详解 请问: Linux下有没有和nbtstat一样的命令,用 nmblookup -A ip 可以 nbstat命令主要用于查看当前基于netbios的tcp/ip连接状态,通过该 ...

  6. 批处理---findstr命令详解

    在文件中寻找字符串. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [/C:string] ...

  7. windows快捷键及运行命令详解 PPS网络电视下载和介绍

    WINVER检查WINDOWS版本 DXDIAG检查DIRECTX信息 MEM.EXE显示内存使用情况 SNDVOL32音量控制程序 SFC.EXE系统文件检查器 GPEDIT.MSC 组策略 REG ...

  8. Windows系统cmd常用命令详解

    刚接触电脑的的时候是DOS系统, 根本就没有Windows系统这样的图形化操作界面, 只有一个黑漆漆的窗口,让你输入命令. 大多数程序员或计算机专家在DOS系统下的操作是非常了得的, 所以想要成为计算 ...

  9. Windows系统 services.msc命令详解,Windows命令行查看本地服务

    「作者主页」:士别三日wyx 第一步.打开cmd 按下 win 键,输入 cmd 后回车,打开「命令提示符」 第二步.查看系统版本 在打开的cmd窗口中,输入 services.msc 后回车,即可在 ...

  10. DOS环境dir命令详解

    首先,在 DOS 环境下,如果想查看 dir 命令的用法,可以键入命令 dir /? 如果想按文件名的字母顺序显示文件,可以键入命令 dir /ON.其中,O 是英文单词 order(顺序)的首字母, ...

最新文章

  1. python素材库_python的JSON库
  2. QT的foreach用法
  3. 楼天成夺Facebook黑客杯季军,已被Facebook录用得到美国绿卡
  4. linux fdisk 权限不够,Linux 文件系统结构、磁盘的管理
  5. Servlet JSP和Spring MVC初学指南 PDF
  6. Python基础教程和入门教程
  7. mysql如何容器化_MySQL容器化详细教程
  8. springboot+jsp校园美食餐厅订餐系统
  9. j2me怎么运行java_[转载]使用J2ME进行开发一个简单的KJava应用程序示例(2)
  10. 苹果id是什么格式的_苹果用户福利 | 史上最简利用itunes抓包教程只需4步!!!...
  11. 查看WLC的SFP模块信息
  12. 【历史上的今天】2 月 20 日:Python 问世;Facebook 收购 WhatsApp;DEC 创始人出生
  13. Python+Vue计算机毕业设计教学辅助系统vmpc7(源码+程序+LW+部署)
  14. 京东云 linux无法远程,问题解读 | Linux系统SSH无法远程登录时该怎么办?这里有篇小攻...
  15. C#中Winform操作百度地图
  16. 安卓快速入门系列1(通过插件使用java8的语法)
  17. tcp协议通过什么来区分不同服务器,tcp协议通过什么来区分不同的连接
  18. 损失函数MSELoss和CELoss
  19. 网络安全事件应急演练
  20. 在Arcgis地图上绘制Echarts热力图(Heatmap)

热门文章

  1. jmeter中的响应断言
  2. 测试平台(一)为什么要搭建测试平台?
  3. 【网页制作】制作静态钟表
  4. 微信小程序名片3:0大战纸质名片,你应该知道如何选择了吧
  5. 信息论与编码-python实现三种编码(香农编码,费诺编码,赫夫曼编码)
  6. SAP 成本组件分割价格详解
  7. Redis数据莫名其妙全部丢失
  8. SOA系列之 什么是SOA?
  9. python画猪头程序_用python画猪头的方法
  10. 高性能Golang研讨会【精】