【WINDOWS / DOS 批处理】for命令详解(八)
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命令详解(八)相关推荐
- 终极dos批处理循环命令详解
---恢复内容开始--- 终极dos批处理循环命令详解 格式:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令 ...
- DOS循环:bat/批处理for命令详解之一 (史上虽详尽的总结和说明~~)
DOS循环:bat/批处理for命令详解之一 (史上虽详尽的总结和说明~~) --- --- 前言: 虽然以前对批处理也算有点研究,但一直对for命令理解不够透彻,偶尔用时也是照猫画虎的用一下. 虽然 ...
- 批处理for命令详解(转) 批处理for命令详解
批处理for命令详解(转) 批处理for命令详解 2008-03-07 11:00 FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直 ...
- 批处理if 命令详解
批处理(bat)if 命令详解 一.语法规则 1.if命令5钟用法 if "字符串1"=="字符串2" command 语句 #判断两个字符串是否相等 if 数 ...
- windows/NBTSTAT,linux/nmblookup命令详解,查询NetBIOS名
NBTSTAT命令详解 请问: Linux下有没有和nbtstat一样的命令,用 nmblookup -A ip 可以 nbstat命令主要用于查看当前基于netbios的tcp/ip连接状态,通过该 ...
- 批处理---findstr命令详解
在文件中寻找字符串. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file] [/C:string] ...
- windows快捷键及运行命令详解 PPS网络电视下载和介绍
WINVER检查WINDOWS版本 DXDIAG检查DIRECTX信息 MEM.EXE显示内存使用情况 SNDVOL32音量控制程序 SFC.EXE系统文件检查器 GPEDIT.MSC 组策略 REG ...
- Windows系统cmd常用命令详解
刚接触电脑的的时候是DOS系统, 根本就没有Windows系统这样的图形化操作界面, 只有一个黑漆漆的窗口,让你输入命令. 大多数程序员或计算机专家在DOS系统下的操作是非常了得的, 所以想要成为计算 ...
- Windows系统 services.msc命令详解,Windows命令行查看本地服务
「作者主页」:士别三日wyx 第一步.打开cmd 按下 win 键,输入 cmd 后回车,打开「命令提示符」 第二步.查看系统版本 在打开的cmd窗口中,输入 services.msc 后回车,即可在 ...
- DOS环境dir命令详解
首先,在 DOS 环境下,如果想查看 dir 命令的用法,可以键入命令 dir /? 如果想按文件名的字母顺序显示文件,可以键入命令 dir /ON.其中,O 是英文单词 order(顺序)的首字母, ...
最新文章
- python素材库_python的JSON库
- QT的foreach用法
- 楼天成夺Facebook黑客杯季军,已被Facebook录用得到美国绿卡
- linux fdisk 权限不够,Linux 文件系统结构、磁盘的管理
- Servlet JSP和Spring MVC初学指南 PDF
- Python基础教程和入门教程
- mysql如何容器化_MySQL容器化详细教程
- springboot+jsp校园美食餐厅订餐系统
- j2me怎么运行java_[转载]使用J2ME进行开发一个简单的KJava应用程序示例(2)
- 苹果id是什么格式的_苹果用户福利 | 史上最简利用itunes抓包教程只需4步!!!...
- 查看WLC的SFP模块信息
- 【历史上的今天】2 月 20 日:Python 问世;Facebook 收购 WhatsApp;DEC 创始人出生
- Python+Vue计算机毕业设计教学辅助系统vmpc7(源码+程序+LW+部署)
- 京东云 linux无法远程,问题解读 | Linux系统SSH无法远程登录时该怎么办?这里有篇小攻...
- C#中Winform操作百度地图
- 安卓快速入门系列1(通过插件使用java8的语法)
- tcp协议通过什么来区分不同服务器,tcp协议通过什么来区分不同的连接
- 损失函数MSELoss和CELoss
- 网络安全事件应急演练
- 在Arcgis地图上绘制Echarts热力图(Heatmap)