BAT---FOR语句

FOR语句用于循环处理,使用FOR中的不同开关,实现不同功能,主要有3个开关,具体如下:

注:变量名区分大小写,如%%i和%%I不相同

一、不使用开关

@ECHO OFF
FOR %%i IN (a,b,"1,2",d) DO (
    ECHO %%i
)
PAUSE

二、使用/R开关

常用于遍历文件夹,查找指定的文件或者目录

@ECHO OFF
FOR /R "F:\temp" %%i IN (.) DO (
      ECHO %%~fi
)

上面代码表示:遍历F:\temp目录下的所有文件夹,并输出文件夹全路径。

注:.表示枚举F:\temp目录下的所有文件夹

@ECHO OFFFOR /R  %%i IN (.) DO (
      ECHO %%~fi
      ECHO %%~ni
)

/R后面如果没有设置要遍历的根目录,那么将使用脚本所在的目录作为根目录进行遍历。

三、使用/F开关

@ECHO OFFFOR /F "EOL=; TOKENS=1,2 DELIMS=," %%i IN (11.txt) DO (
    ECHO "第一个字符是:%%i,第二个字符是:%%j"

)

EOL=;表示忽略分号开头的行

DELIMS=,表示用逗号分隔每行内容

TOKENS=1,2表示将分隔后的第1个字符和第2个字符传递给FOR函数处理

如果TOKENS=1,2*表示将分隔后的第1个字符、第2个字符及剩余的字符传递给FOR函数处理

%%i表示分隔后的第1个字符,%%j表示分隔后的第1个字符,%%k表示分隔后的剩余的字符

四、FOR变量修饰符

@ECHO OFF
FOR /R F:\temp\11.txt %%i IN (.) DO (
      ECHO %%~fi
      ECHO %%~ni
      ECHO %%~di
      ECHO %%~pi
      ECHO %%~xi
      ECHO %%~si
      ECHO %%~ai
      ECHO %%~ti
      ECHO %%~zi

)

%%~i:删除变量%%i的引号

%%~fi:将变量%%i扩展到全路径,如F:\temp\11.txt

%%~ni:将变量%%i扩展到文件名,如11

%%~di:将变量%%i扩展到驱动器号,如F:

%%~pi:将变量%%i扩展到路径,如\temp\

%%~xi:将变量%%i扩展到文件扩展名,如.txt

%%~si:将变量%%i的扩展路径只包含短名

%%~ai:将变量%%i扩展到文件属性,如--a------

%%~ti:将变量%%i扩展到文件日期,如2016/07/19 16:57

%%~zi:将变量%%i扩展到文件大小,如34

组合变更修饰符:

%%~dpi:将变量%%i扩展到驱动器号和路径,如F:\temp\

%%~nxi:将变量%%i扩展到文件名和扩展名,如11.txt

时间: 2024-11-03 22:11:15

BAT---FOR语句的相关文章

DOS/BAT批处理if exist else 语句的几种用法

在DOS批处理命令中常常会通过if语句来进行判断来执行下面的命令, 那么批处理if语句怎么用呢,下面学无忧小编就来说说有关批处理if以及if exist else语句的相关内容.一.批处理if书写格式if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2.二.四种批处理if的用法1.判断驱动器.文件或文件夹是否存在,用 if exist 语句例如:if exist c:\xue51com.txt (echo c盘下有xue51c

windows下bat批处理执行sql语句__Mysql

直接上代码: @ECHO OFF SET dbhost=主机名(例如:127.0.0.1)SET dbuser=用户名(例如:root)SET dbpasswd=用户密码(例如:root)SET dbName=数据库名称(例如:test)SET sqlpath=%~dp0(此语句可以保证.bat同级目录下的.sql文件能被找到)set sqlfile=update.sql(需要执行执行sql的文件) 进入mysql安装路径的bin目录下,如果配置了环境变量则不需要此语句 (例如:cd /d C:

bat(续七)-for语句(循环结构)

for语句(循环结构) for语句可以实现类似于C语言里面的循环结构,当然for语句的功能要更强大一点,通过不同的开关可以实现更多的功能.for语句有多个开关,不同开关将会实现不同的功能. 1.无开关 无开关的for语句能够对设定的范围内进行循环,是最基本的for循环语句.其命令格式为: FOR %%variable IN (set) DO command 其中,%%variable是批处理程序里面的书写格式,在DOS中书写为%variable,即只有一个百分号(%):set就是需要我们设定的循

bat常用符合和for语句等

一.开头 @echo off(默认是echo on)@echo off执行以后,后面所有的命令均不显示,包括本条命令 二.特殊符号 1. | 命令管道符,echo Y|rd /s c:\abc,通过管道命令|将echo y 的结果传给rd /s c:\abc 命令,从而达到自动输入y 的目的.2. > >> 重定向符号(和linux的一样)3. && 只有在符号 && 前面的命令成功时,才用于运行该符号后面的命令(和linux的一样)4. || (和lin

(转)bat批处理的注释语句

在批处理中,段注释有一种比较常用的方法: goto start = 可以是多行文本,可以是命令 = 可以包含重定向符号和其他特殊字符 = 只要不包含 :start 这一行,就都是注释 :start 另外,还有其他各种注释形式,比如: 1.:: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符) 2.rem 注释内容(不能出现重定向符号和管道符号) 3.echo 注释内容(不能出现重定向符号和管道符号)〉nul 4.if not exist nul 注释内容(不能出现重定向符号和管道符号)

(转)Bat Command

1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置.语法 echo [{on|off}] [message] Sample篅echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来. [email protected] 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化

batch.bat explaination

1.Echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. 语法 echo [{on|off}] [message] Sample篅echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来. [email protected] 命令 表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式

BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧. 更多的是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正. 前面几题是会很基础,越下越有深度. 初级Javascript: 1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型:String,boolean,Number,Undefined, Null 引用数据类型:Object(Array,D

Bat脚本学习-4:Oracle自动备份还原脚本

从同事那弄到一份Oracle自动备份还原的脚本,看上去很强大,苦在bat语法不熟,查了半天文档,先弄明白了一小段 @echo off REM 在批处理中,我们可以用setloacl ENABLEDELAYEDEXPANSION这个命令来启用"延迟环境变量扩展" REM 在我们启用了"延迟环境变量扩展"后,当CMD在解释涵有嵌套格式的命令时,他会把嵌套的命令一条一条的先执行一次,然后再进行匹配操作 REM 这样我们的赋值操作就会完成.并且再"延迟环境变量扩展

bat无故报错打印混乱的解决

1. 下面语句加了一个无意义的ping操作.不加的时候经常报错,报操作数不是数字,实际上打印发现NOW值和格式并没有错误.怀疑是下面操作数太多了,而执行速度又太快,导致执行时总是很容易出错.通过增加一个无效的ping操作,增加算术运算前的缓冲,结果不再报错了. :GetSeonds set NOW=%time% ping 127.0.0.1 -n 1 -w 0.1 >nul set /a GetSeonds=%NOW:~0,2%*60+%NOW:~3,2%*60+%NOW:~6,2% GOTO