上一节:http://blog.sina.com.cn/s/blog_51a4af870100eyi7.html
下表按优先性从高到低的顺序列出了支持 /a 的运算符。
| 运算符 | 执行的操作 |
|---|---|
| < > | 分组 |
| * / % + - | 算法 |
| << >> | 逻辑移位 |
| & | 按位“和”运算 |
| ^ | 按位“异或”运算 |
| | | 按位“或”运算 |
| 分配 | |
| , | 表达式分隔符 |
如果使用逻辑 (&& ||) 或模 (%) 运算符,请使用引号将表达式字符串引起来。表达式中的非数字字符串将被视为环境变量名,其值将转化成数字然后才进行处理。如果指定当前环境中没有定义的环境变量
在批处理程序中执行条件处理。
if [not] errorlevel number command [else command2]
if [not] exist filename command [else command2]
如果启用了命令扩展(默认),可以使用以下语法:
if cmdextversion number command [else command2]
if defined variable command [else command2]
在批处理程序中执行条件处理。
if [not] string1==string2 command [else command2]
如果启用了命令扩展(默认),可以使用以下语法:
if [/i] string1 compareop string2 command [else command2]
有些时候,我们需要这样的数组:001 002 003 004 005 006...如何获得呢?一般使用以下几种方法:
|
::示例1 @echo off&setlocal
enabledelayedexpansion |
如果是小于100的数组,也可以这样写:
|
::示例2 @echo off |
那么,反过来,如何删除这些数组字首的0呢?如果为2位数组,则可以:
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=48863&page=1&sid=o2mW8A#pid341183
注意:
在批处理程序中,将 Windows XP 导入到由标签标识的行。找到标签后,程序将处理从下一行开始的命令。
如果启用了命令扩展(即默认状态),并且使用带有目标标签为 :EOF 的 goto 命令,则可以在不定义标签的情况下将控制传送到当前批处理脚本文件的末端,然后退出批处理脚本文件。使用 goto 和 :EOF 标签时,必须在标签前插入冒号。例如:
goto :EOF
有关使该功能有用的 call 命令的信息,请参阅相关主题中的 cmd。
可以在 label 参数中使用空格,但不得包括其他分隔符(例如分号或等号)。goto 命令只使用标签的前八个字符。例如,下面的标签是等效的,且都将解析
在前面,我们讲到使用 skip= 来跳过不需要的行。但在实际使用中,我们需要更复杂的行筛选,该如何实现呢?由于这一功能主要是依靠其他命令完成的,且方法途径众多。所以仅举部分示例。下面批处理用来生成所需的被解析文件:
| @echo off (echo hanye echo han echo guxing echo gu echo ye echo xing echo hanyeguxing)>>Hanyeguxing.txt |
1,筛选符合条件的行:
|
::示例47—显示行首是h,行尾是g的所有行 @echo off |
在最开始,我们讲了 for /d 和 for /r 的使用,虽然简单,但总是受着这样那样的限制,特别是在处理具有隐藏或系统属性的文件和目录上,那么,有什么好的办法解决吗?使用 for /f 。当然, for /f 不是用来处理目录的,所以不能直接使用,但我们可以变通一下,利用 for /f 对命令结果的解析来实现。这里,我们以 dir 命令为例说明。
显示目录文件和子目录列表。如果在没有参数的情况下使用,则 dir 显示磁盘的卷标和序列号,后接磁盘上目录和文件的列表,包括它们的名称和最近修改的日期及时间。dir 可以显示文件的扩展名以及文件的字节大小。Dir 也显示列出的文件及目录的总数、累计大小和磁盘上保留的可用空间(以字节为单位)。