http://blog.sina.com.cn/hygxchxz[订阅]
个人资料
声明
  爱情不可说,不可说,一说就错。雪月风花匆匆过,抄袭转载比较多……
 
  如果未加说明,则所有博文均是以MicrosoftWindowsXP
ProfessionalSP2、SP3
为例。
 
  本博客多数信息来自Microsoft HelpandSupport。
分类
    内容读取中…
活动安排

5月19日,电脑初学者值班


5月21日,电脑初学者2房间
《批处理示例解析》


5月28日,电脑初学者2房间
《批处理示例解析》

访客
读取中...
 
博文
抉择(2009-12-07 21:53)
  多年前,一位年轻人喜欢上了一个女孩儿,俩人很快进入热恋。本来挺开心的事,却忽然飞来横祸:她被发现得了再生障碍性贫血。
  那是八十年代的事情,刚刚被“血疑”里幸子薰陶过的国人,都明白这个病的危险性,而且,医生直接宣布:不会超过半年。
  年轻人是农村人,家中老大,承担着生子继承的重任,而这个病,明显是不能生孩子的,而且,就算是不那么短时间就如何如何,这样的病,拖的越长越是问题——至于哪些问题,大家可以去想。
  怎么办?
  之间发生了什么,思想斗争家庭争执啊什么的,我们不得而知,我们看到的只是结果:他决定跟她结婚。
  他做这个决定的时候,是不是仅仅微笑着点头,我们一样不得而知。
  不管是不是微笑,类似的决定,都不会是轻松的。
  这样的承诺,赌上的,往往是自己的一生。
  她当然不同意,她说:没这么坑人的。
  他说:花多少钱我都给你治,有一天是一天,治不了再说,再说医生说的也不一定对。我一定把你照顾好。
  后来的日子果然,他用心服侍她,给她买各种营养品,做各种好吃的。
  治病上,照有未来做,生活上,照没未来做。

上一节:http://blog.sina.com.cn/s/blog_51a4af870100eyi7.html

 

下表按优先性从高到低的顺序列出了支持 /a 的运算符。

 

运算符 执行的操作
< > 分组
* / % + - 算法
<< >> 逻辑移位
& 按位“和”运算
^ 按位“异或”运算
| 按位“或”运算
= *= /= %= += -= &= ^= |= <<= >>= 分配
, 表达式分隔符

 

如果使用逻辑 (&& ||) 或模 (%) 运算符,请使用引号将表达式字符串引起来。表达式中的非数字字符串将被视为环境变量名,其值将转化成数字然后才进行处理。如果指定当前环境中没有定义的环境变量

if

 

在批处理程序中执行条件处理。

 

语法

 

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]

 

参数

 

not
指定只有当条件为假时才执行该命令。
errorlevel number
只有当由 Cmd.exe 运行的前一个程序返回大于或等于 number 的退出代码时,才能指定真条件。
command
指定只有满足前面的条件时才应执行的命令。
exist filename
如果 filename 存在

if 的比较运算

 

在批处理程序中执行条件处理。

 

语法

 

if [not] string1==string2 command [else command2]

 

如果启用了命令扩展(默认),可以使用以下语法:

 

if [/i] string1 compareop string2 command [else command2]

 

参数

 

not
指定只有当条件为假时才执行该命令。  
command
指定只有满足前面的条件时才应执行的命令。
string1==string2
只有当 string1string2 相同时才能指定真条件。这些值可以是文字字符串或批处理变量(例如,%1)。对于文字字符串,不需要使用问号。
CompareOp
指定 3 个字母的比较运算符。下表列出了 compareop 的有效值。

 

  有些时候,我们需要这样的数组:001 002 003 004 005 006...如何获得呢?一般使用以下几种方法:

 

::示例1

@echo off&setlocal enabledelayedexpansion
for /l %%i in (1 1 20) do set han=00%%i&echo !han:~-3!
pause

 

  如果是小于100的数组,也可以这样写:

 

::示例2

@echo off
for /l %%i in (1 1 20) do if %%i lss 10 (echo 0%%i) else echo %%i
pause

 

  那么,反过来,如何删除这些数组字首的0呢?如果为2位数组,则可以:

 

原文地址http://www.cn-dos.net/forum/viewthread.php?tid=48863&page=1&sid=o2mW8A#pid341183

 

注意:

  1. 此批处理需要第三方命令行工具 sed.exe ,从网址 http://ishare.iask.sina.com.cn/f/5621524.html 下载,然后和批处理保存在同一目录下,放到system32目录下也可。
  2. Han.txt为原始源文件,Xing.txt为输出文件。
  3. >Xing.txt echo 序号        次数        电话号码,中间是制表符,不是一串空格。
  4. if !Ye! lss 11 >>Xing.txt echo !Ye!        !Gu!        %%j),中间是制表符,不是一串空格。

 

            一、单符号
~
① 在for中表示使用增强的变量扩展。
② 在%var:~n,m%中表示使用扩展环境变量指定位置的字符串。
③ 在set/a中表示一元运算符,将操作数按位取反。

!
① 在set /a中一元运算符,表示逻辑非。比如set /a a=!0,这时a就表示逻辑1。

@
① 隐藏命令行本身的回显,常用于批处理中。

$
① 在findstr命令里面表示一行的结束。
② 在prompt命令里面,表示将其后的字符转义(符号化或者效果化)。

%
① 在set /a中的二元运算符,表示算术取余。
② 命令行环境下,在for命令in前,后面接一个字符(可以是字母、数字或者一些特定字符),表示指定一个循环或者遍历指标

Goto

 

  在批处理程序中,将 Windows XP 导入到由标签标识的行。找到标签后,程序将处理从下一行开始的命令。

 

语法

 

goto label

 

参数

 

label
指定所要转向的批处理程序中的行。
/?
在命令提示符显示帮助。

 

注释

 

  • 使用命令扩展

    如果启用了命令扩展(即默认状态),并且使用带有目标标签为 :EOFgoto 命令,则可以在不定义标签的情况下将控制传送到当前批处理脚本文件的末端,然后退出批处理脚本文件。使用 goto:EOF 标签时,必须在标签前插入冒号。例如:

    goto :EOF

    有关使该功能有用的 call 命令的信息,请参阅相关主题中的 cmd

  • 使用有效的 label

    可以在 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 /f 'delims=' %%i in (Hanyeguxing.txt) do (
set Han=%%i
setlocal enabledelayedexpansion
if '!Han:~,1!!Han:~-1!'=='hg' echo !Han!
)
pause

  在最开始,我们讲了 for /dfor /r 的使用,虽然简单,但总是受着这样那样的限制,特别是在处理具有隐藏或系统属性的文件和目录上,那么,有什么好的办法解决吗?使用 for /f 。当然, for /f 不是用来处理目录的,所以不能直接使用,但我们可以变通一下,利用 for /f 对命令结果的解析来实现。这里,我们以 dir 命令为例说明。

 

Dir

显示目录文件和子目录列表。如果在没有参数的情况下使用,则 dir 显示磁盘的卷标和序列号,后接磁盘上目录和文件的列表,包括它们的名称和最近修改的日期及时间。dir 可以显示文件的扩展名以及文件的字节大小。Dir 也显示列出的文件及目录的总数、累计大小和磁盘上保留的可用空间(以字节为单位)。

 

语法

 

dir [Drive:][Path][FileName] [...] [/p] [/q] [/w