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

article/2025/11/11 12:36:07

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

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

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

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

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

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

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

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

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

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

 命令格式

【格式一】FOR  %variable  IN (set) DO cmd  [cmd-parameters]

【格式二】FOR   /R   [ [drive:]path] ]   %variable  IN (set) DO cmd  [cmd-parameters]

【格式三】FOR   /D  %variable  IN (set) DO cmd  [cmd-parameters]

【格式四】FOR   /D   /R  [ [drive:]path] ]  %variable  IN (set) DO cmd  [cmd-parameters]

【格式五】FOR  /L %variable  IN (start,step,end) DO cmd  [cmd-parameters]

【格式六】

【格式一】

   FOR    %variable  IN (set) DO cmd [cmd-parameters] 

 【注意】DO后面必须存在空白,即使do后面是左括号

【%variable参数】

 variable 指定一个名称为单一字母的循环变量名,例如:%V,variable 区分大小写,所以 %V 不同于 %v。for命令用于批处理文件中时,%variable 必须写为 %%variable

【cmd参数】

指定对每个文件执行的命令 

【cmd-parameters参数】

指定cmd的参数 

【set参数  

    在【格式一】中,set 被看作一个使用一个或多个空格分隔的文件名列表

工作原理

   对于 set 中以空白分隔的每一个文件名,

  • 如果它包括通配符,则for命令会在当前目录下查找匹配它的文件,并找到的文件名赋值给%variable,并执行 cmd [cmd-parameters];如果没有找到匹配它的文件,则for命令会忽略它;
  • 如果它不包括通配符,则for命令直接把它赋值给%variable,并执行 cmd [cmd-parameters] ,而不会在当前目录下查找它,也就是说,与它是否存在无关。

【格式一命令功能】

  • 要遍历当前目录下的非隐藏文件,set中的文件名称必须使用通配符
  • 要分割“以空白分隔的字符串”,set中的文件名称不能使用通配符

1、set 是一个文件名列表,其中的文件名可以是不存在的

        示例

demo.txt的内容如下:

::demo.bat
@echo  off:: x.txt和y.txt都不是真实存在的文件
for %%a in (x.txt y.txt) do (
echo %%a
)

        运行

C:\out>tree /f .
卷 系统 的文件夹 PATH 列表
卷序列号为 B019-EC3F
C:\OUT
│  a.txt
│  b.txt
│  demo.bat
│
└─ziDir│  c.txt│└─sund.txtC:\out>demo
x.txt
y.txt
C:\out>

2、set 是一个文件名列表,如果它外面加双引号(或单引号或反引号),则会改变“原义”

        示例

demo.txt的内容如下:

:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码  【标注一】
::demo.bat
@echo  off:: "x.txt y.txt"被看作一个文件名
for %%a in ("x.txt y.txt") do (
echo %%a
)
echo ------------------------------
:: 单引号被看作普通字符
for %%a in ('x.txt y.txt') do (
echo %%a
)echo ------------------------------
:: 反引号被看作普通字符
for %%a in (`x.txt y.txt`) do (
echo %%a
)

【标注一】   下载Notepad++  

           运行

C:\>demo
"x.txt y.txt"
------------------------------
'x.txt
y.txt'
------------------------------
`x.txt
y.txt`
C:\>

3、set 是一个使用一个或多个空格分隔的文件名列表,set 开头和末尾的空白(一个或多个空格)会被忽略 

        示例

demo.txt的内容如下:

::demo.bat
@echo  off
set /a num=0
for %%a in (   aa   bb     ) do (
set /a num+=1
echo %%a
)
echo %num%

        运行 

C:\out>demo
aa
bb
2
C:\out>

4、set 是一个文件名列表,其中的每个文件名都可以使用通配符( * 、?),通配符只能匹配当前目录下的非隐藏文件名(不能匹配目录名)

        示例

demo.txt的内容如下:

::demo.bat
@echo  off:: x.txt和y.txt都不是真实存在的文件
for %%a in (x.txt *.txt) do (
echo %%a
)
echo -----------------------------------------------:: a.txt存在于c:\out目录下,y.txt不是真实存在的文件
for %%a in (a.txt *.txt) do (
echo %%a
)

        运行

C:\out>tree /f .                  // tree命令不能显示隐藏目录和隐藏文件
卷 系统 的文件夹 PATH 列表
卷序列号为 B019-EC3F
C:\OUT
│  a.txt
│  demo.bat
│
└─ziDir│  c.txt│└─sund.txtC:\out>dir /b /a:h b.txt         // b.txt是隐藏文件
b.txtC:\out>demo
x.txt
a.txt
-----------------------------------------------
a.txt         // 输出结果没有除重   
a.txt         
C:\out>

5、set 是一个文件名列表,其中的文件名支持转义字符(^)  

        示例

::demo.bat
@echo  off
for %%a in (a^a bb cc) do (
echo a:  begin-%%a-end
echo ----------------------------------------------
)

        运行 

C:\out>demo
a:  begin-aa-end
----------------------------------------------
a:  begin-bb-end
----------------------------------------------
a:  begin-cc-end
----------------------------------------------C:\out>

 【应用实例】

要求:把PATH环境变量的每个路径分离出来进行逐行显示

思路:在for命令格式一中,set 是一个使用一个或多个空格分隔的文件名列表,并且其中的文件名可以不存在,那么就可以使用格式一来分割“以空白分隔的字符串”。%PATH%是以分号分隔的字符串,需要先把分号替换为空格,实现如下:

demo.bat是内容如下:

:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码
::  【标注一】
::demo.bat
@echo  off:: "%path:;=" "%" 是set,其外面加了双引号
:: %path:;=" "%  把PATH环境变量值中的每个分号( ; )替换成一个空格
:: %%~a  是变量扩充,将%a的变量值两边的双引号除掉   【标注二】
for %%a in ("%path:;=" "%") do (
if not ""==%%a echo %%~a
)

 【标注一】       下载Notepad++

 【标注二】       什么是变量扩充 

        运行

C:\out>demo
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem...
C:\out>

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


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

相关文章

批处理 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;利用它可以获取我们连接到的数据库的结构、存储等…

DatabaseMetaData类

DatabaseMetaData类是java.sql包中的类&#xff0c;利用它可以获取我们连接到的数据库的结构、存储等很多信息。如&#xff1a; 1、数据库与用户&#xff0c;数据库标识符以及函数与存储过程。 2、数据库限制。 3、数据库支持不支持的功能。 4、架构、…