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

article/2025/11/10 18:59:34

 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>

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


http://chatgpt.dhexx.cn/article/Ltb9hr0u.shtml

相关文章

【WINDOWS / DOS 批处理】for命令详解(一)

for命令详解(一)【共十篇】 for命令详解(二)【共十篇】 for命令详解(三)【共十篇】 for命令详解(四)【共十篇】 for命令详解(五)【共十篇】 fo…

批处理 bat for 详解

一、前言 在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能;配合if、call、 goto等流程控制语句,更是可以实现脚本复杂的自动化、智能化操作;合…

批处理for循环命令初步学习

1 基本格式 DOS批处理for循环语句的基本格式是, for /参数 %变量 in (集) do 命令 参数:FOR分四种参数 D L R F; 变量:变量名是由单个字母组成且区分大小写(原帮助是这么说的,实际运用中用单个数字作为…

BAT批处理文件 for命令详解

Windows bat脚本的for语句基本形态如下: 在cmd窗口中:for %I in (command1) do command2 在批处理文件中:for %%I in (command1) do command2之所以要区分cmd窗口和批处理文件两种环境,是因为在这两种环境下,命令语句…

jenkins配置中执行 ant 命令时,提示找不到ant 命令

1.在服务器上手动执行ant ,则可以正常执行,但是使用jenkins 构建时却提示无法识别ant命令 查询了相关原因为:jenkins默认情况下执行shell脚本是使用非登录方式,然而非登录方式不会加载 /etc/profile 文件,且ant_home 此…

Ant的使用简介

Ant的使用简介 1、Ant简介 ApacheAnt是一个基于Java的构建工具。是一个将软件编译、测试、部署等步骤想结合并加以自动化的一个工具,大多用于Java环境中的软件开发。目前主要的Java ide都带有Ant,产品如Eclipse、NetBeans和IntelliJ IDEA。 理论上&…

openfire运行ant命令控制台中文乱码问题

最近项目要使用openfire来进行插件开发,下载openfire源码导入工程后,运行源码的build目录下的build.xml中的ant命令,其中run命令是启动openfire服务器,结果控制台输出乱码,如图所示: run命令的原始ant脚本是…

使用Ant打包工具

由于使用java,javac,jar等工具进行编译打包,即繁琐低效又容易出错,因此Ant出现了。Ant的出现就是专门为了打包编译java代码的,使用之前得稍微学一下。Ant的运行起来主要是依靠配置文件(XML格式),通常命名为…

ant命令征集详解

ANT指令build.xml命令集 1.ANT示例1.0(将指定路径下的文件复制到指定的其他位置) <?xml version"1.0" encoding"UTF-8" ?> <project name"antTest" default"compile" basedir"."><target name"clean…

Ant企业使用(二)------ant命令及使用

上节说到ant的部署安装&#xff0c;下面呢咱们开始介绍下ant命令以及使用&#xff1a;一.ant命令 语法元素说明如下&#xff1a; -help 显示描述ant 命令及其选项的帮助信息 -projecthelp 显 示包含在构建文件中的、所有用户编写的帮助文档。即为各个中description 属性的文…

简单的Ant命令

使用Ant打印一句话 1.最简单的打印方法 新建build.xml文件&#xff0c;在该文件输入一下内容&#xff1a; <project default"main target" name"first project"> <target name"main target"><echo>this is my firt ant pri…

ant使用总结(二):相关命令说明

在ant安装目录的manual目录是ant的说明文档&#xff0c;打开index.xml&#xff0c;点击Using Apache ant有使用说明。 相关命令说明 指定配置文件 执行ant命令&#xff0c;默认使用当前目录下的build.xml&#xff0c;可以通过-f指定配置文件。 示例&#xff1a;ant -f 配置文件…

DatabaseMetaData 获取数据表字段注释内容

使用DataBaseMetaData获取mysql表字段注释 DatabaseMetaData metaData connection.getMetaData(); ResultSet rs null; rs metaData.getColumns(dbName, null, tableName, "%");while (rs.next()) { QueryColumn columnnew QueryColumn(rs.getString…

Spring boot项目中DatabaseMetaData方式获取表字段信息

日常工作中我们可能会遇到一些配置化的功能&#xff0c;比如我们需要根据元数据项动态生成一些模板&#xff0c;比如表格&#xff0c;excel等&#xff0c;这些都需要我获取到数据库表中字段长度、类型、格式等信息。下面就以一个小白的身份和大家分享下自己的实现过程。 背景 …

Java中DataBaseMetaData与ResultMetaData基本使用

java中的DataBaseMetaData与ResultMetaData使用&#xff1a; DataBaseMetaData 类对象通过Connection类对象获取 1&#xff0c; 获取数据库的url 2&#xff0c; 获取用户名 3&#xff0c; 获取有哪些数据库 package com.xzq.jdbc;import com.xzq.dbutils.DbUitl;import java.s…

DatabaseMetaData.getIndexInfo

示例 通过 DatabaseMetaData.getIndexInfo&#xff08;&#xff09; 获取索引信息。 public static void getIndexInfo() throws Exception {Connection conn getConnection();ResultSet rs null;try {DatabaseMetaData dbmd conn.getMetaData();rs dbmd.getIndexInfo(&q…

数据库元数据 DatabaseMetaData

一、元数据介绍 &#xff08;数据库元数据 DatabaseMetaData&#xff09; 数据库元数据指的是"数据库的定义信息。 DataBaseMetaData元数据获取方式 通过Connection.getDatabaseMetaData()方法获得代表DatabaseMetaData元数据的DatabaseMetaData对象。DataBaseMetaData…

DatabaseMetaData类的getTable()、getColumns()方法使用,以及参数的传递问题,针对oracle、mysql、postgres三种数据库进行举例

DatabaseMetaData类 DatabaseMetaData实例的获取获取数据库属性的方法getTable()方法getColumns()方法关于参数一参数二传参问题 DatabaseMetaData类是java.sql包中的类&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等很多信息。如&#xff1a; 1、数据库与用户&a…

数据库之元数据——DatabaseMetaData的getMetaData()方法的简单使用

DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口&#xff0c;本文讲解DatabaseMetaData和ResultSetMetaData接口获取元数据的方法。 package com;import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverMa…

DatabaseMetaData的简单使用

在看大佬写的一个导出数据库建标脚本的接口的时候&#xff0c;发现频频用到DataBaseMetaData这个类&#xff0c;之前也没有 用过这个类下的API&#xff0c;记录一下心得用法。 DatabaseMetaData是java.sql包中的接口&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等…